【发布时间】:2011-09-14 18:18:56
【问题描述】:
我正在尝试使用 32 位寄存器将小数转换为浮点整数。到目前为止,我必须手动(铅笔和纸)完成此操作,我的号码是
1.11010110111100110100010011(base 2) x 2^26
现在我知道尾数只能存储 2^23 位,所以我需要展示使用四舍五入和不四舍五入的情况。我的问题是什么决定了舍入?我知道截断会导致这个
1.11010110111100110100010(base 2) x 2^23
是否舍入只是向右看,如果等于 1,则向上舍入为 1,如果等于 0,则向下舍入为 0?
如果数字是
1.11010110111100110100010111(base 2) x 2^26 where there is a one to the right?
如果 2^3 的位是 1,而 2^2(右侧)的位是 1,就像本例中一样
1.11010110111100110100011111(base 2) x 2^26
谢谢,我只是有点不清楚现阶段的四舍五入。
【问题讨论】:
-
提示:二进制数的截断和四舍五入与小数一样。
-
我想我的问题是,当四舍五入时,您是否只是在四舍五入时从左侧第 24 位位置向右看?如果是1,那么你四舍五入,如果是零,那么离开它?或者您是否必须查看其余部分以确定是否需要四舍五入@Paul R
-
@floating: 好的 - 好点 - 理论上你需要查看尽可能多的位来进行“正确”舍入,但实际上大多数硬件实现使用右边的 1 或 2 位来决定是否四舍五入。
-
好的,这是有道理的,非常感谢@Paul R
-
将双精度数 (IEEE 794) 与 2 的幂相乘时不进行舍入。只有指数增加。
标签: floating-point floating-accuracy