二进制和位运算
程序员文章站
2022-05-29 10:10:12
原码 反码(取反) 补码(+1)负数用补码表示8 -00001000(原码)-01110111(反码)-01111110(补码)原码转补码 取反+1补码转原码 取反+1 位运算:&(与):遇0则0|(或):遇1则1^(异或):加法不进位 ~(取反):0变1,1变0>>(带符号右移):左边补符号位<< ......
原码 反码(取反) 补码(+1)
负数用补码表示
8 -00001000(原码)-01110111(反码)-01111110(补码)
原码转补码 取反+1
补码转原码 取反+1
--------------------------------------------------------------------------------
位运算:
&(与):遇0则0
|(或):遇1则1
^(异或):加法不进位
1 010 ^ 111 2 第一位:0+1=1 3 第二位:1+1=0 4 第三位:0+1=1 5 所以最后结果:101
~(取反):0变1,1变0
>>(带符号右移):左边补符号位
<<(左移):不带符号左移
>>>(不带符号右移):左边补0
1 a和b交换 2 a=a^b 3 b=a^b 4 a=a^b
a/2 等同于 a>>1
a*2 等同于 a<<1