2025-11-20 05:19:02
因为计算机用补码算数,当两个最大正数相减时,结果会变成-1。比如8位数255-255等于-1,16位数65535-65535也这样。这是补码表示负数的方式决定的,就像满罐再倒水会溢出一样。
计算机用补码存负数,比如8位数的-1用11111111表示。当255(11111111)减255时,先算1111等于00000000,但借位没地方放,所以高位自动进位变成10000000,这正好是-128的补码。但16位数是借位到更高位,结果变成1000,对应-32768?不对啊,这里好像哪里错了。哦原来16位数的-1是1111,所以65535-65535等于-1。就像满的16位数再减1就会变成-1,就像满的杯子倒空再倒空还是空,但这里用负数表示,所以显示-1。
本题链接: