C语言问题:一个两字节的存储单元所存的最小整数
C语言问题:一个两字节的存储单元所存的最小整数书上说:由两字节存放的最小整数是 1000 0000 0000 0000,这是为什么?请大师指教.
最佳回答
对于所有整数在内存中都是以整数的补码形式存在,2个字节是2*8=16位,而位是用0或1表示的,自己画16个空格,如果是最大正整数的话,开头第一位必须是符号位0,然后后面的15位都是1,所以表示的最大十进制整数是32767,如果是最小负整数的话,开头第一位必须是符号位1,另外要记住这样一个关系原码=补码取反-1(这里的取反包含符号位,这里举个例子求补码为11111010的十进制整数,先对其补码取反的00000101,算的的结果为5,因为补码的最高位是1可以断定该数为负数,所以结果为-5再减1得,-6),因为最高位为1已经定下来啦,所以要使原码最大,则补码取反必须最大,则补码必须最小,则后面的15位都为0,所以补码必须为1000000000000000,通过刚才的方法先求反得0111111111111111,得到的整数为32767,因为补码的最高位是1可以断定该数为负数,所以结果为-32767,再减1得-32768。。这个还是比较绕人,自己再好好想想吧~~~
最新回答共有2条回答
-
2026-04-08 23:35:36包容的世界
回复对于所有整数在内存中都是以整数的补码形式存在,2个字节是2*8=16位,而位是用0或1表示的,自己画16个空格,如果是最大正整数的话,开头第一位必须是符号位0,然后后面的15位都是1,所以表示的最大十进制整数是32767,如果是最小负整数的话,开头第一位必须是符号位1,另外要记住这样一个关系原码=补码取反-1(这里的取反包含符号位,这里举个例子求补码为11111010的十进制整数,先对其补码取反的00000101,算的的结果为5,因为补码的最高位是1可以断定该数为负数,所以结果为-5再减1得,-6),因为最高位为1已经定下来啦,所以要使原码最大,则补码取反必须最大,则补码必须最小,则后面的15位都为0,所以补码必须为1000000000000000,通过刚才的方法先求反得0111111111111111,得到的整数为32767,因为补码的最高位是1可以断定该数为负数,所以结果为-32767,再减1得-32768。。这个还是比较绕人,自己再好好想想吧~~~
热门文章
- 康达学院专转本五年制
- 高考一个考场分ab卷吗
- not only but also用法
- 某物体做自由落体运动,从释放开始计时,则物体在前2s内的平均速度为______m/s,物体下落2m时的速度大小为______m/s.
- 三角函数公式大全表格
- 地理中考必背知识点2022
- 2013-2014学年小学六年级科学上学期期末考试试卷及答案
- 人教版2014-2015学年小学五年级英语第二学期期中教学质量检测试卷及答案
- 【Linux驱动开发】设备树详解(二)设备树语法详解
- 别跟客户扯细节
- 在别的城市买房子能落户吗
- 卖房前要把装修贷还完吗
- 高中政治教学提高教学效果的方法探究
- “互联网+”背景下的初中英语课堂教学改革与创新策略研究
- 2022年终止合同范本
- 租房合同范本范文
- 如何挑选土豆
- 如何挑选土鸡
