位运算
位运算
数值转换为二进制格式’逐位’进行的运算
- ‘&’ 与 ((n&8)==8) !(n&8)
- ‘|’ 或
- ‘^’ 异或
- ‘~’ 取反
- ‘<<’ 左移
- ‘>>’ 右移
- ‘’
- ‘’
- ‘’
& 与
1234
4 * 10^0
3 * 10^1
2 * 10^2
1 * 10^3
1 2
2 4
3 8
4 16
5 32
6 64
7 128
8 256
9 512
10 1024
101000
000001
000001 =0,1
掩码操作
前三位为网络地址,第四位为主机地址
192.168.1.101 255.255.255.0
192.168.1.102 255.255.255.0
192.168.1.103 255.255.255.0
xxxx xxxx
0000 0000
---------
0000 0000
|或
叠加
1 0001 响铃
2 0010 震动
4 0100 LED
8 1000 其他
0011
判断某种状态是否启用
(v & 2) == 2
0011
0010
----
0010
^异或(相同为0,不同为1)
1010 a 0110
1100 b 1100
0110 a^b 1010
1100
1100
0000 相同的值异或得 0
~ 取反
- 正数 按位取反加一
// 0000 0011 3
//~a
// 1111 1100 符号位1,负数,读:按位取反并加一
// 1000 0100 -4 - 负数 变符号位减一
左移、右移
// 0000 1001
// 0001 0010 左移 *2
// 1000 0100 右移 /2取整