长度为1个字节的二进制整数,若采用补码表示,且由4个"1"和4个"0"组成,则可表示的最小整数为多少?我知道,如果要最小那么表示的补码必须是10000111,变成源码就是取反加一11111001啊,怎么算都是-122,怎么答案都是-121呢,就是取反后不加1,为什么不加一呢,我很迷惑,查了关于这一块说的 很模糊,我不懂,答案为什么是-121不是-122呢?

问题描述:

长度为1个字节的二进制整数,若采用补码表示,且由4个"1"和4个"0"组成,则可表示的最小整数为多少?
我知道,如果要最小那么表示的补码必须是10000111,变成源码就是取反加一11111001啊,怎么算都是-122,怎么答案都是-121呢,就是取反后不加1,为什么不加一呢,我很迷惑,查了关于这一块说的 很模糊,我不懂,答案为什么是-121不是-122呢?

补码:1000 0111
求原码,取反加1,得到:1111 1001
转化为十进制,首位为符号位,1表示负数,后7位表示数字绝对值
111 1001B = 121D (1+8+16+32+64=121,可用计算器验证)
所以最小整数为-121