首页 > 编程知识 正文

考虑以下c语言代码short usi=65535,16位有符号整数能表达的最大值是

时间:2023-05-04 21:47:17 阅读:111196 作者:4858

今天,初学者一学习编程就问了这个问题。 很多人第一次学习编程就一定会遇到这个问题。 大多数人都知道溢出等,可以通过源代码和修补程序轻松解释

int i=-2147483648; 这是不可接受的VS中报告的错误,error C4146 :一元负运算符应用于无符号类型,结果保持无符号类型的错误

那么,如果必须共享符号位和数据位,例如int存储器-2147483648,则int的第一位二进制文件被认为符号位0是整数,1是负数

-2147483647原代码1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

-2147483647-1=-2147483648;

因为cpu存储了补数计算

-2147483647补数10000000000000001

-1补数11111111111111111111111111111111111111111

-2147483648得到补数1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

-2147483648-1得到2147483647;

-2147483648补数10000000000000

-1补数11111111111111111111111111111111111111111

得到补数0111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

正好是2147483647的最大值

2147483647 1得-2147483648;

2147483647补数01111111111111111111111111111111111111111

1补码00000000000000001

得到补数100000000000000

正好是-2147483648最小值

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。