为什么偏向负数?

Hap*_*tal 0 integer twos-complement

如果在我的编译器上,int是16位,那么它的范围是-32768到32767(在2的补码机器中).
我想知道为什么负数有1个额外的没有.即正数转为32767但负数转为另一个ie-32768.

-32768如何用2的补码m/c表示?

eye*_*eam 6

在16位上,您可以将pow(2,16)(2到16的幂)组合成不同的组合来表示65536个数字.确定零看起来最好代表000 ... 000并且"二补"系统中的正数通常是可读的(它们等于所谓的"自然二进制"表示,如0000 0000 0000 0101 = 5十进制等) .

二进制补码中的负数以1111 1111 1111 1111开头,表示-1.把它想象成一个数字为997,998,999的计数器表盘,突然当它必须代表1000它溢出并显示000时.原理在这里是相同的,但方向是相反的 - 来自... 000到... 111.-2表示为1111 .... 1110,依此类推.

二进制补码中最低的数字前面有1个,其余数字为零.