按位运算是先把数转换成二进制数在进行运算
计算机都是以补码的形式存储的整数的原码,反码补码都一样,计算负数的时候需要先转换成反码在转换成补码,计算完成后在转换成原码.
1. 按位与(&)---相同位置上同为1时为1,否则为0.
例如 5&4
5: 0000 0101
&
4: 0000 0100
||
0000 0100 =4
负数的按位与运算
例如10&-7
-7 原码:1000 0111
反码:1111 1000
补码:1111 1001
10: 0000 1010
&
-7: 1111 1001
||
0000 1000 = 8
2. 按位或(|) 相同位置的数有1为1,全0为0.
例如5|4
5: 0000 0101
|
4: 0000 0100
||
0000 0101 =5
负数的或运算
例如10|-7
10: 0000 1010
&
-7: 1111 1001
||
1111 1011 转换成反码 1111 1010转换成原码 1000 0101 = -5
3. 按位非 (~) 按位取反 1为0,0为1.
例如 ~5
5: 0000 0101
1111 1010 转换成反码 1111 1001 转换成原码 1000 0110 = -6
公式 : ~A的结果是-(A+1)
4. 按位异或(^)同一个位置的数,相同为0,不同为1
5. <<n:左移n位 相当于n乘以2的n的次方
10左移两位是多少:40
0000 1010
0010 1000-- = 40
6. >>n:右移n位 相当于n除以2的n次方
7. 8右移两位是多少
0000 0100
0000 0010 = 2