为什么int是从-32768到32767而不是从-32767到32767呢?有人的回答是这样的,我最后一块句话没看懂计算机用二进制表示负数是用的“补码法”,做法是正数按原码,负数用其相反数的反码加一.这种结
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/26 12:58:54
为什么int是从-32768到32767而不是从-32767到32767呢?有人的回答是这样的,我最后一块句话没看懂计算机用二进制表示负数是用的“补码法”,做法是正数按原码,负数用其相反数的反码加一.这种结
为什么int是从-32768到32767而不是从-32767到32767呢?
有人的回答是这样的,我最后一块句话没看懂
计算机用二进制表示负数是用的“补码法”,做法是正数按原码,负数用其相反数的反码加一.
这种结果用-32768代替了“-0”,可以使符号位能与有效值部分一起参加运算,从而简化运算规则;同时使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计.
举例:
3的码值是 00000011,-3则为:11111100+1= 11111101
32767的码值是01111111,11111111(15个1),-32767是
10000000,00000000+1=10000000,00000001
-32768是01111111,11111111+1=10000000,00000000
最后-32768为什么是0111……这样开头的啊,应该是1开头的吧?
像-32767也是1开头的,负数不应该是1开头的么?
为什么int是从-32768到32767而不是从-32767到32767呢?有人的回答是这样的,我最后一块句话没看懂计算机用二进制表示负数是用的“补码法”,做法是正数按原码,负数用其相反数的反码加一.这种结
-32768的对应相反数是32768,它的二进制是1000000000000000,反码(按位取反)后是0111111111111111,再+1后变成1000000000000000.
-32767的对应相反数是32767,它的二进制是0111111111111111,反码(按位取反)后是1000000000000000,再+1后变成1000000000000001.
.
.
.
-1的对应相反数是1,它的二进制是0000000000000001,反码(按位取反)后是1111111111111110,再+1后变成1111111111111111.
所以负数的表示范围是从-32768到-1,正数不变还是0到32767,合起来就是-32768到32767了.