【问题标题】:16bit floating point16位浮点
【发布时间】:2011-12-20 18:15:06
【问题描述】:

我无法理解即将到来的考试的 16 位浮点数。 我有以下二进制数字(转换后);

+11100.1110002 = 28.8752。我很容易得到 28,但我如何得到 '875' ?

谢谢

【问题讨论】:

  • “get”用什么方式?算法转换成十进制字符串?
  • 你的意思是 28.875 base 10,不是 base 2,对吧?
  • 这看起来不像浮点数,而是假设的十进制(二进制?)点。如果是浮点数,中间通常不会有小数点。

标签: floating-point 16-bit


【解决方案1】:

在数字中,数字的值乘以常数,具体取决于位置。我们以十进制数为例:

ab.cd10 = a*101 + b*100 + c*10-1 + d*10-2

它对二进制数的工作方式类似。对于示例中二进制点右侧的部分:

0.1110002 = 2-1 + 2-2 + 2-3 = 0.5 + 0.25 + 0.125 = 0.875。

【讨论】:

  • 好的,没错,但是,我从哪里得到这些数字?
  • 它们只是 1/2、1/4、1/8 - 只是普通二进制数的倒数
  • @ChrisArom 哪个数字?我的答案的二进制部分来自你。如果您的意思是 2^-1 (等等),那是因为它是一个以 2 为底的(即二进制)数。对于 base-10(十进制),它将是 10^-1。对于 base-8(八进制),它将是 8^-1。
  • 谢谢大家,我现在明白了 :) 是时候多练习了。
【解决方案2】:

的左侧。是乘以 2,右边是除以 2。

所以你得到了 0.1110

0.1 = 0.5
0.01 = 0.25
0.001 = 0.125
----------------+
0.875

【讨论】:

    猜你喜欢
    • 2015-06-20
    • 2010-12-12
    • 2010-09-24
    • 2011-03-02
    • 2019-10-25
    • 2011-10-25
    • 2017-12-06
    • 2013-08-31
    相关资源
    最近更新 更多