有符号机器数的范围
- 来源:
- 发布者:54cfan
- 进入论坛
我在学习C语言的过程中遇到一个问题,那就是一个占2字节,即16位的有符号机器数(此处是基本整型),它能表示的范围是-2^15~2^15-1 右边的界限很好理解,但是为什么在表示负数时会达到-2^15呢,比如说,共有3位的话,那么最小应该是表示到-3才对呀,即-2^2 1才对呀,请帮忙解释一下,谢谢!
54cfan.cn答:给你个程序,自己看了以后好好理解。
main()
{int x,y;
x=32767,y=x 1;
printf("%d,%d\n",x,y);
}
运行结果:32767,-32768
这是因为字长里最高位为1表示负数,为0表示正数。32767就表示为0111111111111111(15个1),即为2^15-1,32767加1后就为1000000000000000(15个0),它是-32768的补码形式。
建议你好好温习一下补码。
54cfan.cn答:感谢风起★枫落的精彩解答
54cfan.cn答:有什么好琢磨的,整型不行就用浮点型啊,这些问题好像没啥意思……建议楼主少研究这类问题,知道就可以了,否则走火入魔就不好呵
54cfan.cn答:
54cfan.cn答:给你个程序,自己看了以后好好理解。
main()
{int x,y;
x=32767,y=x 1;
printf("%d,%d\n",x,y);
}
运行结果:32767,-32768
这是因为字长里最高位为1表示负数,为0表示正数。32767就表示为0111111111111111(15个1),即为2^15-1,32767加1后就为1000000000000000(15个0),它是-32768的补码形式。
建议你好好温习一下补码。
54cfan.cn答:感谢风起★枫落的精彩解答
54cfan.cn答:有什么好琢磨的,整型不行就用浮点型啊,这些问题好像没啥意思……建议楼主少研究这类问题,知道就可以了,否则走火入魔就不好呵
54cfan.cn答:
(编辑:aisy)
更多相关文章
- · 摄像头不能用2008-06-16
- · 电脑死机重启故障2008-06-13
- · 引起Windows操作系统自动重启的几大原因[开机问题]2008-06-09
- · 综合分析解决电脑启动故障[开机问题]2008-06-10
- · 计算机不能启动!电源和我捉迷藏[开机问题]2008-06-10
- · 10种常见计算机无法启动故障解决方法[开机问题]2008-06-10
- · 奇异!网卡接触不良引发黑屏故障[开机问题]2008-06-10
- · 电源热稳定性差引起的“黑屏”[开机问题]2008-06-10
- · WinXP启动故障诊断[开机问题]2008-06-10
- · CPU接触不良导致无法启动[开机问题]2008-06-10
