提示:计算机基础
文章目录
4位源码、反码、补码表
如文章有误还请留言
4位有符号整型数
正数和0的 三码合一,即原码、反码和补码都一样
反码:符号位不变其余位取反
补码:反码+1 (符号位不参与计算)
十进制 | 二进制原码 | 二进制反码 | 二进制补码 |
---|---|---|---|
1 | 0001 | 0001 | 0001 |
2 | 0010 | 0010 | 0010 |
3 | 0011 | 0011 | 0011 |
4 | 0100 | 0100 | 0100 |
5 | 0101 | 0101 | 0101 |
6 | 0110 | 0110 | 0110 |
7 | 0111 | 0111 | 0111 |
0 | 0000/1000 | 0000 | 0000 |
-8 | 源码没有-8 (1000) | ? (1111) | 1000 |
-1 | 1001 | 1110 | 1111 |
-2 | 1010 | 1101 | 1110 |
-3 | 1011 | 1100 | 1101 |
-4 | 1100 | 1011 | 1100 |
-5 | 1101 | 1010 | 1011 |
-6 | 1110 | 1001 | 1010 |
-7 | 1111 | 1000 | 1001 |
原码最符合人的直觉,但是不适合用电路实现,如果有符号数用补码表示,则可直接用电路计算就可得到正确值。 | |||
如: 正数与负数补码相加正好得到0的补码,补码相加得到的结果是正确的 |
在计算机中应该是用补码进行运算
如:四位 -8(二进制补码1000) + -1(二进制补码1111)
运算结果为 7(二进制补码0111)
如:short sv = -32768 (补码1000 0000 0000 0000);
short sv2 = -1 (补码1111 1111 1111 1111);
short sv3 ( 补 码 0111 1111 1111 1111) = sv + sv2;
sv3结果为 32767
再如:
若数据类型为 unsigned short 0xFFFF则为65535;
若数据类型为 short 0xFFFF则为-1;
若为有符号类型则最高位为符号位