下面都以8位为例,说明问题即可。
一、原码(-127—127):
原码求法:有符号数的二进制表示。
例如:4 = 0000 0100(原码)
-4 = 1000 0100(原码)
0有两种表示:0000 0000和1000 0000
二、反码(-127—127):
负数反码求法:在原码基础上,符号位不变,其余各位取反;
正数反码与原码相同;
例如:4 = 0000 0100(原码)= 0000 0100(反码)
-4 = 1000 0100(原码)= 1111 1011(反码)
0有两种表示:0000 0000和1000 0000
三、补码(-128—127):
负数补码求法:在反码基础上,末尾加一;
正数补码与原码相同;
例如:4 = 0000 0100(原码)= 0000 0100(反码)= 0000 0100(补码)
-4 = 1000 0100(原码)= 1111 1011(反码)= 1111 1100(补码)
0只有一种表示:0000 0000
-128表示为: 1000 0000
四、移码(-126——127):
移码求法:补码的符号位取反;
例如:4 = 1000 0100(移码)
-4 = 0000 0100(移码)
1000 0000 和 1111 1111 保留用来表示特殊值和无穷大;