计算机表示数据按定长来表示,如果使用8位二进制表示数据,它是有一定的数据范围的,即最大值和最小值,超过最大值则要超出8位二进制,此时将舍掉。
计算机中最高位是符号号,0表示正数,1表示负数,所以最大值为01111111,转成十进制为127。
最小值是多少呢?
按照求最大值的思路应该是11111111,转成十进制为-127。
这个答案是不正确的。
计算机中使用补码来表示数据,我们可以求-127小1的数,如下:
(-127)+(-1)
= 11111111(原) + 10000001(原)
= 10000001(补)+11111111(补)
= 10000000(补)超过8位将舍掉
10000000等于-128吗?应该等于-0才对。
注意:0不分正负,所以计算机规定00000000为0,10000000为-128。
所以8位二进制可表示的数据范围是:-128到127
有个公式可以套用:
8位二进制可表示的数据范围是:-2^7到 2^7 - 1 (负2的7次方到 2的7次方减1)即-128到127
32位二进制可表示的数据范围是:-2^31到 2^31 - 1 (负2的31次方到 2的31次方减1)即-2,147,483,648到2,147,483,647
1、已知某数的原码是10110101,求它的补码和反码。
2、已知某数的补码是11101111,求它的原码。