🔍
https://yunshuai.me

位运算与位移运算

原码、反码和补码

原码

将一个数用二进制表示出来,该二进制码称为原码,其中最高位表示符号,0为正,1为负。

反码

补码

计算机中的运算都是使用补码

0的原码、反码和补码都是0

正数的原码、反码和补码都相同

例子

数据原码反码补码
14000011100000111000001110
-14100011101111000111110010

位运算

位运算符

运算符符号表示字母表示规则
按位与&And两位全为1,结果为1。
按位或|Or两位全为0,结果为0。
按位异或^Xor一个为0,一个为1,结果为1。
按位非~Not1为0,0为1。

练习题

步骤说明
2的原码00000010
2的反码00000010
2的补码00000010
~211111101该码为补码,且最高位是1,表示负。
转化为反码11111100该码为反码。
转化为原码10000011该码是原码,结果是-3。
步骤说明
-5的原码10000101
-5的反码11111010
-5的补码11111011
~-500000100该码为补码,且最高位是0,表示正。
转化为反码00000100该码为反码。
转化为原码00000100该码是原码,结果是4。
步骤说明
-3原码10000011
-3的反码11111100
-3的补码11111101
3的原码00000011
3的反码00000011
3的补码00000011
-3^311111110该码为补码,最高位是1,表示负。
转化为反码11111101该码为反码。
转化为原码10000010该码是原码,结果是-2。

位移运算

规则

练习

步骤说明
1的原码00000001
1的反码00000001
1的补码00000001
1»200000000该码为补码,最高位是0,表示正。
转化为反码00000000该码为反码。
转化为原码00000000该码是原码,结果是0。
步骤说明
-11的原码10001011
-11的反码11110100
-11的补码11110101
-11«211010100该码为补码,最高位是1,表示负。
转化为反码11010011该码为反码。
转化为原码10101100该码是原码,结果是-44。