A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 whbsspu 于 2014-10-22 22:03 编辑

我在学习C语言的过程中遇到一个问题,那就是一个占2字节,即16位的有符号机器数(此处是基本整型),它能表示的范围是-2^15~2^15-1   右边的界限很好理解,但是为什么在表示负数时会达到-2^15呢,比如说,共有3位的话,那么最小应该是表示到-3才对呀,即-2^2+1才对呀,请帮忙解释一下,谢谢!


评分

参与人数 1技术分 +1 收起 理由
星河鹭起 + 1

查看全部评分

1 个回复

倒序浏览
给你个程序,自己看了以后好好理解。
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的补码形式。
建议你好好温习一下补码。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马