为了账号安全,请及时绑定邮箱和手机立即绑定

求大佬解惑

int不是只能包含两个字符吗?那为什么int的范围是-2^15~2^15-1呢

正在回答

2 回答

二进制数在计算机内存储的是其补码
对于有符号数,正数的补码和本身一样,负数的补码是本身的数字位取反后加1
比如:
1=(0001)补=(0001)
-1=(1001)补=(1111)
计算机存储-1就是存储的1111
因此
当int表示范围为16位时,可以表示的最大负数为:
10000...0000(后面有15个0)
相当于-0
但这其实是-32768=110000...0000(第一位符号位,后面有15个0)的补码表示
可以理解为16位的int足可以表示-32768的补码

1 回复 有任何疑惑可以回复我~

因为最高位是符号位,然后2的15减一是因为还有一个0

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926206    人
  • 解答问题       20797    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

求大佬解惑

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信