首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >整数溢出包装与计算

整数溢出包装与计算
EN

Stack Overflow用户
提问于 2020-07-04 10:42:46
回答 1查看 296关注 0票数 0

我是一个编程初学者,我正在学习C整数溢出,我发现很难理解整数溢出输出的概念,我有几个问题:

  • ,什么是整数溢出,是否有一个通用的数学过程,在整数溢出中显示一个很大的数字?

  • I在维基百科上读到,它说“溢出最常见的结果是存储最不重要的可表示数字;结果被认为是围绕最大值(即模基的幂,在现代计算机中通常是两个,但有时是十个或另一个基)。当算术运算产生的结果大于上面对N位整数的最大值时,溢出会将结果降低到2的模N次方,只保留结果中最不重要的位数,并有效地导致around."

包。

我完全不明白这里说的是什么,“结果的最不重要的可表示数字被存储”和“结果被说成是围绕最大值(即模一个基数的幂”),最后是什么意思“溢出将结果降低到模n次方,只保留最不重要的位”,能不能有人用例子向我解释这一点,我一点也不明白。

上一次我问这个问题时,它被关闭为一个副本,与所谓的“重复”问题的重复链接对我没有任何帮助,也没有回答我的问题,因为它是如此模糊,不像我想要理解的那样深入。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-15 21:14:54

对于任何正整数N,当用直接二进制表示法表示数学整数时,从最后N位为零的数中减去1将产生最后N位全部为1的数,而在最后一位全部为1的二进制数中添加一个数将产生一个数,其最后N位都为零,与任何上位的值无关。此外,对于任何N,由于任何N的最后N位数为零,从零中减去1将产生最后N位全部为1的数。因此,值-1实际上是1位的无限数。

由于使用无限位数来保存值-1是不切实际的,计算机通常使用一种约定,即在有符号数中最重要的表示位左边的所有位都具有与该位相同的值。这会导致最重要位的值表现为负数,其大小与无符号值相同。

在像Java这样的语言中,或者在Dennis发明的C方言中,包含有符号整数的计算将被处理,就像计算了可表示的位一样,然后上层位的值通过无限数量的上位进行“符号扩展”。由于某些计算机的行为不同,标准允许实现以任意不同的方式运行。一些“聪明”的实现,如gcc,将此解释为在整数溢出发生时,即使在整数溢出行为可预见的平台上运行时,也会发出无意义行为的邀请。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62728125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档