int a =129;
int b =128;
1.与a & b
两个位都为1,结果才为1,否则结果为0。
a 的值是129,转换成二进制就是10000001,而 b 的值是128,转换成二进制就是10000000。结果是10000000,即128。
2.或a | b
两个位只要有一个为1,那么结果就是1,否则就为0。
a 的值是129,转换成二进制就是10000001,而b 的值是128,转换成二进制就是10000000,结果是10000001,即129。
3.非~a
如果位为0,结果是1,如果位为1,结果是0。
a 的值是129,转换成二进制就是10000001,取非结果是01111110,即-130。
4.异或a^b
两个操作数的位,相同则结果为0,不同则结果为1。
a 的值是129,转换成二进制就是10000001,而b 的值是128,转换成二进制就是10000000,结果是00000001,即1。
5.<<左移
将对象向左移动指定的位数(在右边补0)。
例:8<<3 (8乘(2的3次方))
8的二进制:00001000,左移两位后:01000000 = 64。 -8<<3 = -64
6.>>右移
将对象向右移动指定的位数(左边正数用0填补,负数用1填补)。
例:64 >>3(8除(2的3次方))
64的二进制:01000000,右移两位后:00001000 = 8。 -64<<3=-8
7.>>>无符号右移
将对象向右移动指定的位数(左边用0填补)。
8,反码 + 1 = 补码,负数的二进制 为 正数的二进制的补码
20 的二进制: 00000000000000000000000000010100。
其反码表示: 11111111111111111111111111101011。
反码 + 1: 11111111111111111111111111101100。(即-20)
网友评论