位运算
位运算是指对数据二进制位进行运算
-
按位与&
-
按位或|
-
按位异或^
-
非~
-
原码、反码、补码
按位与&
都为1则结果为1否则为0
1&1=1
1&0=0
0&0=0
按位或|
有一个为1则结果为1否则为0
1|1=1
1|0=1
0|0=0
按位异或^
相同为0 相异为1
1^1=0
1^0=1
0^0=0
非~
1变0,0变1
~1=0
~0=1
原码、反码、补码
原码:除符号位以外的其他二进制位
//1的原码,32位中去除左侧最高位剩下的31位就是原码
0000 0000 0000 0000 0000 0000 0000 0001
反码:正数的反码就是本身,负数的反码是原码取反
//1的反码
0000 0000 0000 0000 0000 0000 0000 0001
//-1的反码
1111 1111 1111 1111 1111 1111 1111 1110
补码:正数的补码是本身,负数的补码是原码取反加1
//1的补码
0000 0000 0000 0000 0000 0000 0000 0001
//-1的补码
1111 1111 1111 1111 1111 1111 1111 1111
应用场景:
原码:正数的位运算使用的原码
反码:为了得到补码的一个中间值
补码:反码+1,负数位运算需用的是补码