一个 8位补码由4 个“1”和 4 个“0”组成,则可表示的最大十进制整数为?参考资料上的答案是120

问题描述:

一个 8位补码由4 个“1”和 4 个“0”组成,则可表示的最大十进制整数为?参考资料上的答案是120
我在网上搜出的答案却是240,我不懂,

不可能是240啦
8位补码中,首位是符号位,表示数字的正负,0为正,1为负.
其余7位表示数值的大小.
7位的二进制数最大也就是7个1吧,1111111B = 127D
转换成十进制就是127,所以240肯定是错的啦~
题目要求最大,那么先确定这是一个正数,即首位是0
根据补码的定义,我们知道,对于一个正数,它的原码、反码、补码都是相同的.
也就是说,它的补码就是该数字的实际大小.
显然,将所有的1置于高位就可以了,得到结果:
0111 1000B=120D

之所以会得出240,是因为没有把首位符号位考虑在内,所以得出:
1111 0000B=240D
的结果.这是错误滴~那如果求最小的话呢?如果要求最小,那么首先确定首位是1,表示负数负数的绝对值越大,值越小,但是需要注意到这是一个补码(负数的补码不再和原码相同),补码的绝对值越小,原码的绝对值才越大,所以要将所有剩余的1置于低位。得到:1000 0111。对其求补(符号位不变,其余按位取反),得到原码:1111 1001B=-121D