关于IEEE-754单精度浮点,你如何执行舍入到最近,其中四舍五入到所需位置的最接近的偶数位(默认值和最常见的模式)?
基本上我有保护位,圆位和粘滞位。 因此,如果我们将它们组成一个向量并将其称为GRS,则适用以下规则:
G = 0
,向下舍入(不做任何事)G = 1
,RS == 10
或RS == 01
,向上舍入(在尾数中添加一个)GSR = 111
,round to even 所以我不知道如何进行最接近的回合。非常感谢任何帮助。
答案 0 :(得分:32)
为确保我们位于同一页面上,G
是三者中最重要的一部分,R
接下来,S
可被认为是最不重要的bit,因为它的值部分代表在计算中被截断的更低有效位。这三个位仅在进行计算时使用,并且在计算之前或之后不存储在浮点变量中。
为了使用G
,R
和S
将结果四舍五入到最接近的偶数,您应该这样做:
GRS - 行动
0xx - 向下舍入=什么都不做(x表示任何位值,0或1)
100 - 这是平局:如果 G 之前的尾数位为1,则向上舍入,否则向下舍入=不执行任何操作
101 - 向上舍入
110 - 向上舍入
111 - 向上舍入
通过在G
之前的尾数最低有效位位置将尾数加1来完成舍入。如果尾数溢出(它将存储的23个最低有效位变为零),则必须向指数加1。如果指数溢出,则根据数字的符号将数字设置为+无穷大或无穷大。
在平局的情况下,如果尾数为奇数,则在尾数中加1,如果是偶数则不加任何东西。这就是使结果四舍五入到最接近的偶数值的原因。
答案 1 :(得分:5)
只是想补充一点 S 位不仅仅是跟在 GR 位之后。如果在 GRS 位之后有位可用,则它实际上是逻辑 OR ,包括 S 位。
换句话说,如果 GR 位 1 之后有任何位,那么 S 位值将 1
答案 2 :(得分:0)
当您的一组位比要保持的精度低时,请考虑以下四舍五入:
我认为这只需执行一次测试即可实现所需的行为。