热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

溢出意味着什么?

如何解决《溢出意味着什么?》经验,为你挑选了2个好方法。

我已经读了两个关于溢出意味着什么的定义.

假设我们有以下添加:

 11111111
 00000001
 --------
100000000

我读过的第一个定义是结果不适合8位(在本例中需要9位)的事实,然后这称为溢出.


我读过的另一个定义是,如果我们有两个有符号整数的加法(例如两个补码整数):

 10011001
 10111011
 --------
101010100

然后,如果8位result(01010100)的符号与两个整数的符号不同(在本例中它是不同的),那么这称为溢出.

哪个定义是正确的?



1> Aki Suihkone..:

这两种情况都可以通过在结果中再添加一位来解决.作为Integer Overflow状态的Wikipedia页面,当操作结果不适合目标寄存器/变量时,会发生整数溢出.例如0x10000*0x10000也是32位整数的溢出.

典型的处理器体系结构将无符号整数溢出与有符号整数溢出的情况分离为状态寄存器中的两个不同标志; 携带/借用无符号和溢出以进行签名添加.



2> 小智..:

他们都是正确的.当数字的计算由于结果不再适合存储的数字格式而导致错误时,就会发生溢出.

因此,在第一种情况下,溢出发生是因为您需要9位且只有8位可用(意味着现在存储在字节中的数字不能准确反映答案).

在第二种情况下,发生溢出是因为结果会干扰有符号位,从而导致字节包含不正确的值.


推荐阅读
author-avatar
李子
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有