与运算符 &
两位同时为“1”,结果才为“1”,否则为“0”
0&0=0; 0&1=0; 1&0=0; 1&1=1
或运算符 |
有一位为1,其值为1,否则位0。
0|0=0; 0|1=1; 1|0=1; 1|1=1
非运算符 ~
如果位为0,结果是1。如果位为1,结果是0
整数,计算机用最高位l来表示符号位,0表示为正,1表示为负。
负数,便于计算,计算机用补码来表示其值。
一个数的补码,要知道其值分两种情况:
1:符号位是0,正数,所以后面的二进制位则表示大小,即正数的原码=其补码。如1表示出来则为00000001(我这里用八位来表示,也可以用16位或32位)
2:符号位是1,负数,这时候需要把后面的数取反再加一(根据补码的特性推出来),所以11111110表示的数是1111110取反为0000001,再加一,则为0000002。算上符号位,就是-2。
1的二进制表示为:00000001,则~1为11111110,根据补码的转换方法,我们就可以算出11111110表示的数是-2.
以int型为例:
~1 = 11111111 11111111 11111111 11111110 = -2
~0 = 11111111 11111111 11111111 11111111 = -1