为什么int是从-32768到32767而不是从-32767到32767呢?有人的回答是这样的,我最后一块句话没看懂计算机用二进制表示负数是用的“补码法”,做法是正数按原码,负数用其相反数的反码加一.这种结
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/13 06:55:54
![为什么int是从-32768到32767而不是从-32767到32767呢?有人的回答是这样的,我最后一块句话没看懂计算机用二进制表示负数是用的“补码法”,做法是正数按原码,负数用其相反数的反码加一.这种结](/uploads/image/z/13384566-54-6.jpg?t=%E4%B8%BA%E4%BB%80%E4%B9%88int%E6%98%AF%E4%BB%8E-32768%E5%88%B032767%E8%80%8C%E4%B8%8D%E6%98%AF%E4%BB%8E-32767%E5%88%B032767%E5%91%A2%3F%E6%9C%89%E4%BA%BA%E7%9A%84%E5%9B%9E%E7%AD%94%E6%98%AF%E8%BF%99%E6%A0%B7%E7%9A%84%2C%E6%88%91%E6%9C%80%E5%90%8E%E4%B8%80%E5%9D%97%E5%8F%A5%E8%AF%9D%E6%B2%A1%E7%9C%8B%E6%87%82%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%94%A8%E4%BA%8C%E8%BF%9B%E5%88%B6%E8%A1%A8%E7%A4%BA%E8%B4%9F%E6%95%B0%E6%98%AF%E7%94%A8%E7%9A%84%E2%80%9C%E8%A1%A5%E7%A0%81%E6%B3%95%E2%80%9D%2C%E5%81%9A%E6%B3%95%E6%98%AF%E6%AD%A3%E6%95%B0%E6%8C%89%E5%8E%9F%E7%A0%81%2C%E8%B4%9F%E6%95%B0%E7%94%A8%E5%85%B6%E7%9B%B8%E5%8F%8D%E6%95%B0%E7%9A%84%E5%8F%8D%E7%A0%81%E5%8A%A0%E4%B8%80.%E8%BF%99%E7%A7%8D%E7%BB%93)
为什么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了.