什么是浮点中的溢出和下溢?
What is overflow and underflow in floating point
我觉得我不是很理解overflow
和underflow
的概念。我问这个问题是为了澄清这一点。我需要用比特来理解它最基本的层面。让我们使用1
字节的简化浮点表示- 1
位符号,3
位指数和4
位尾数:
0 000 0000
我们可以存储的最大指数是111_2=7
减去K=2^2-1=3
得到的4
,它保留给Infinity
和NaN
。max number的指数为3
,即偏移二进制下的110
。
0 110 1111 // positive
1 110 1111 // negative
当指数为0时,表示该数是次正规的,并且隐含0
而不是1
。所以最小数字的位模式是:
0 000 0001 // positive
1 000 0001 // negative
我找到了这些单精度浮点数的描述:
Negative numbers less than −(2−2−23) × 2127 (negative overflow)
Negative numbers greater than −2−149 (negative underflow)
Positive numbers less than 2−149 (positive underflow)
Positive numbers greater than (2−2−23) × 2127 (positive overflow)
其中我只理解正溢出,导致+Infinity
,示例如下:
0 110 1111 + 0 110 1111 = 0 111 0000
谁能使用我上面概述的位模式演示其他三种溢出和下流的情况?
当然,以下内容取决于实现,但如果数字的行为与IEEE-754规定的类似,浮点数不会溢出和下溢到一个非常不正确的答案,就像整数一样,例如,你真的不应该以两个正数相乘得到负数而告终。
相反,溢出将意味着结果"太大而无法表示"。根据舍入模式的不同,这通常用max float(RTZ)或Inf (RNE)表示:0 110 1111 * 0 110 1111 = 0 111 0000
(请注意,您所知道的整数溢出可以通过应用类似的夹紧操作在硬件中避免,只是没有这样做的惯例。)
当处理浮点数时,术语下流意味着数字"太小而无法表示",这通常只导致0.0:
0 000 0001 * 0 000 0001 = 0 000 0000
注意,我也听说过术语underflow被用来表示溢出到一个非常大的负数,但这不是最好的术语。这是一个结果为负且太大而无法表示的例子。"负面溢出":
0 110 1111 * 1 110 1111 = 1 111 0000
相关文章:
- 允许在隐藏溢出的情况下进行触摸滚动
- 当屏幕大小为中或小或xs时,文本溢出,会弄乱整个表.不过,它在全屏模式下运行良好
- 下拉菜单溢出在引导导航栏内不起作用
- 如何检测 CSS 区域中的下溢
- 当在 Ul 上使用向上/向下箭头到达溢出自动项目的顶部/底部时显示隐藏的项目
- Javascript 是否处理整数溢出和下溢?如果是,如何
- 由于列表溢出,无法在此列表左侧弹出下拉菜单(减去左边距)
- ReactJS-将溢出的元素放入一个“"下拉按钮
- 以父对象为中心并带有溢出的下拉列表:隐藏
- 从左侧和右侧计数溢出的列表项.(上/下)
- CSSJS-默认情况下,长li文本展开(溢出应隐藏)
- 什么是浮点中的溢出和下溢?
- 引导旋转木马溢出:隐藏的中断下拉按钮
- 滚动溢出下的顶部和底部潜水
- 如何溢出我的固定页脚与我的下拉列表
- 如何通过单击操作栏中溢出图标下的项目来调用其他活动
- Javascript处理整数上溢和下溢吗?如果是,如何
- 如何防止flex容器溢出/下溢
- 由于溢出属性,CSS下拉菜单没有显示
- 将溢出列表框向下移动,因为每个复选框都被循环自动选中