要好好看看原理方面的书
计算机编码有:
原码,反码,补码三种
下面都是以16位机为例
原码不用说了,直接把十进制换成二进制是多少就是多少.
1的原码是0x0001
-1的原码是0x8001(最高位设为1也就是二进制的1000 0001转换成16进制就是0x8001)
反码:转换成二进制后取反.
补码:
如果这个数是正数则使用原码.
如果这个数是负数则最高位设为1
然后再把数字转换成二进制后取反码再加一(为什么要加一?因为负数是没有-0的所以加一个.这样正数的表示范围就是0-32767,而负就的表示范围就变成了1-32768可以多表示一个数,同时免去了有-0使0有唯一的表示法.当然补码这样的设计的好处还有:方便了计算机进行数字的加减等运算,你要是看到补码的运算法则就会发现这样设计非常方便)
如-1
最高位为1
后面的15位计算如下:
1的原码:
000 0001
取反:111 1110
取反+1: 111 1111
加上最高位的1就是1111 1111转换成16进制就是0xFFFF
实际上计算机上面都是补码来保存数据的
所以-1转换成16进制就0xFFFF
温馨提示:答案为网友推荐,仅供参考