国航 国际航班 行李:谁能告诉我-32768的补码具体是怎么算出来的?

来源:百度文库 编辑:杭州交通信息网 时间:2024/03/29 02:14:16
书上是说,负数的补码是先将求其绝对值,然后再将其转变成二进制,之后各位取反,在加1,可是 -32768去绝对值后已经超出了int的范围,怎么办?
谢谢二位,还是不太懂。老谭说,-32768的补码是1000000000000000,可一楼的意思好像是0000000000000000,二楼的答案和老谭一样,可您说的补多一位我不懂什么意思,您说“32768对应正数32768(1000000000000000),”32768已经溢出了啊,怎么又等于1000000000000000?请说具体一些,谢谢您!

溢出就溢出呗,先正数补多一位,然后再按规则,然后再把补上的高一位去掉。
-32768对应正数32768(1000000000000000),这才16位
然后逐位取反01111111111111111,
加1得 1000000000000000,所以-32768对应的补码为
1000000000000000

常数通常在主存中以补码形式存储的.
-32768与+32768在主存中都是
0000000000000000
-32768的补码可以这样算=-32767-1
负数相减即为补码相加
1111111111111111加1即0000000000000000
此时程序状态字(PSW)的溢出位为1