数的溢出

数的溢出:

22>=0 ??
3000
3000>=0 ??
40000 40000>=0 ??
50000
50000>=0 ??
假设要你判断上面式子的正误,你肯定会说这都是对的,因为从小学起老师教给我们的知识就是任何实数的平方大于等于0。
但是,假设要机器来运算上面的式子是否跟我们想的一样呢?下面是一个用C语言编写的一个计算整型数据的平方的程序:
在这里插入图片描述
让我们在Linux下运行该程序
①首先,我们先来计算一个小一点的数的平方,如2的平方,其结果为:
在这里插入图片描述
这样的结果对我们来说并不意外,因为2的平方本就等于4;
②接下来,我们运行一下第二和第三个不等式,其结果为:
在这里插入图片描述
在这里插入图片描述
显然,这两个不等式也是对的。
③还有最后的一个50000的平方,经过前面的三个不等式,我想最后一个不就是数字比前三个大了一点吗?没什么差别啊。这个肯定也是对的,那事实真是如此吗?运行一下便知真假:
在这里插入图片描述
诶,这结果怎么是这么个回事啊??怎么就变成了个负数了?跟预期的不是一码事啊!
原因
计算机中的整型数据是由32位2进制数组成的,因为它只有32位,它最大能表示的正整数为2的31次方减1,也就是2147483647,刚才的第四个不等式的正确结果为2500000000,大于其能表示的最大整数,超出其能表达的范围,造成了数的溢出。所以,对于计算机而言,并不是所有数的平方都大于等于。.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值