【问题标题】:Representing a float as a hexadecimal将浮点数表示为十六进制
【发布时间】:2023-04-06 01:36:01
【问题描述】:

我正在研究浮点类型,示例是一个以十六进制表示的变量浮点的声明

float f_in_hex = Ox1.59a8f6p8f

这是找到浮点值的计算:

(1 * 16^0 + 5 * 16^-1 + 9 * 16^-2 + 10 * 16^-3 + 8 * 16^-4 + 15 * 16^-5 + 6 * 16^- 6) * 2^8

所以,我知道前缀 Ox 是什么,base 是 16 但我仍然不明白为什么指数部分从 0 开始并带有负值

【问题讨论】:

  • 尝试计算更大的数字。例如,尝试计算0xA1C.59AD 的值,然后您会注意到

标签: java floating-point numbers


【解决方案1】:

它是负值,因为它在小数点之后

16^(-1) 等于 1/16 = .0625

如果它是正指数,那将是一个很大的数字。

希望你明白我的意思

【讨论】:

    【解决方案2】:

    那不是十六进制数,首先Ox是字母O而且不是零,然后假设的十六进制数中有一个字母p,十六进制数只覆盖从a-f

    【讨论】:

    • p 表示在 Java 中使用十六进制浮点文字时 IEEE 754 编码浮点的指数分量。
    猜你喜欢
    • 2014-03-01
    • 2011-05-31
    • 1970-01-01
    • 2012-08-10
    • 1970-01-01
    • 2010-12-08
    • 2016-06-02
    • 1970-01-01
    相关资源
    最近更新 更多