首页 > 其他 > 详细

INT_MAX (2147483647) 和INT_MIN (-2147483648)溢出

时间:2018-03-08 19:20:16      阅读:834      评论:0      收藏:0      [点我收藏+]

c语言中32位int型数据在运算的时候可能会出现溢出的情况,如:

-2147483648-1会得到什么结果?

-2147483648乘(-1)会得到什么结果?

2147483647+1会得到什么结果?

 

在编译器中运行一下得到的结果分别是:

-2147483648-1=2147483647;

-2147483648乘(-1)=2147483647

2147483647+1=-2147483648

 

下面解释出现这几个情况的原因:

①-2147483648的二进制表示为1000 0000 0000 0000 0000 0000 0000 0000,a-1=1000 0000 0000 0000 0000 0000 0000 0000+FFFFFFFF

很明显,这里会溢出,结果将变为7FFFFFFFF,用int表示就是2147483647。

②-2147483648*(-1),对-2147483648按位取反,得到7FFFFFFF就是2147483647。

③2147483647的二进制表示为7FFFFFFF,加1之后就变为了80000000,结果就是-2147483648。

INT_MAX (2147483647) 和INT_MIN (-2147483648)溢出

原文:https://www.cnblogs.com/bigyang/p/8530304.html

(1)
(1)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!