求大佬解惑

来源:2-3 变量及赋值

qq_晓月残风_jmvC06

2018-09-13 08:29

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

写回答 关注

2回答

  • 慕标3351658
    2018-09-30 17:26:32
    已采纳

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

  • 修裾欲溯空
    2018-09-13 09:05:13

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

C语言入门

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

926206 学习 · 20797 问题

查看课程

相似问题