我在大学学习操作系统课程,最近学习了浮点数在内存中的表示方法。我们的作业是手动将浮点数(float)转换为它们的二进制表示形式。例如,200.0234375在经过漫长的转换过程后会变成01000011010010000000011000000000。其中一个问题是0.1f在内存中的表示方式。所以我完成了整个转换过程,得出了以下结果:00111101110011001100110011001100。根据我们目前所学的知识,这是正确的答案(我问了老师)。但是,在下一个问题中,我们被要求使用程序验证答案,看看0.1f的实际二进制表示形式。真正的表示形式是00111101110011001100110011001101。(注意最后一位)然后我们被要求猜测为什么会发生这种情况。我在转换数字时注意到了周期性的0011,由于最终的0后面的下一位将是1,我认为计算机会将最后的0四舍五入为1,这可以解释差异。所以,我的问题是,我正确吗?计算机是否基于使用23位尾数时的下一位来舍入最后一位? 这是一项作业,如果我错了,如果您能简单地指导我找到答案,我将不胜感激。此外,我无法通过使用我能想到的关键字进行谷歌搜索找到答案。如果这是一个重复的问题,请原谅我。