Jes*_*ond 5 floating-point binary ieee-754
我正在大学学习操作系统课程,最近我们学会了如何在内存中表示浮点数.
我们的作业是关于将浮动数字float手动转换为二进制表示.
例如,在漫长的转换过程之后200,0234375会给出01000011010010000000011000000000.
其中一个问题是如何在内存中表示0.1f.所以我做了整个转换过程,最后得到了这个:
00111101110011001100110011001100
根据我们到目前为止所学到的,这是问题的正确答案(我问老师).
但是,在下一个问题上,我们被要求用程序验证答案,以查看0.1f的实际二进制表示.真正的代表是这样的:
00111101110011001100110011001101
(注意最后一点)
然后我们被要求尝试猜测为什么会发生这种情况.
我注意到0011在转换数字时的周期性,并且由于最终的下一位0将是a 1,我会假设计算机将该最终结果舍入0
到a 1,这将解释差异.
所以,我想知道的是,我是否正确?当使用尾数的23位时,计算机是否根据下一位是什么来舍入最后一位?
这是一个家庭作业,所以如果你错了,我可以简单地指导我找到答案,我会很感激.
另外,我用谷歌搜索我能想到的关键字找不到我的问题的答案.请原谅我这是否重复.
使用 23 位尾数时,计算机是否根据下一位对最后一位进行四舍五入?
是的当然。默认情况下,编译器和浮点运算系统会尝试为您提供正确的舍入结果。
打个比方,如果我让你把 2/3 写到小数点后三位,你会回答 0.666 还是 0.667?它应该是 0.667,因为它更接近真实答案。