【问题标题】:How to obtain the hex value 0xffff corresponding to the decimal value -0.000061 in the table below?如何获取下表中十进制值-0.000061对应的十六进制值0xffff?
【发布时间】:2016-06-13 03:19:33
【问题描述】:

在本页的开头The OpenType Font File,您会找到该表,其中包含 F2DOT14 格式的示例,用于 16 位有符号固定数和小数的低 14 位。

我无法获得十进制 -0.000061 的十六进制值 0xffff。顺便说一句,尾数 -1 似乎是错误的,分数的值应该是 1/16384,而不是 16383/16384,除非我遗漏了与用于在代码中表示负值的二进制补码表示法相关的内容。

【问题讨论】:

    标签: opentype


    【解决方案1】:

    列出的尾数和小数完全正确:F2DOT14 字段将数字编码为算术计算mantissa + fraction,而不是“带无符号级联小数余数的有符号尾数”。

    因此,如果您想要-0.000061,您必须从前两位 (11) 中的有符号整数 -1 开始,然后 添加 正值 16383/16384最后 14 位 (11111111111111),例如 mantissa + fraction = -1 + 16383/16384 = -1/16384,然后使用 16 位代码 0xFFFF 编码

    【讨论】:

    • 最后,我同意你的看法。
    猜你喜欢
    • 2011-12-21
    • 2018-07-26
    • 2015-08-01
    • 1970-01-01
    • 2014-02-18
    • 2011-07-12
    • 1970-01-01
    • 2014-10-12
    • 1970-01-01
    相关资源
    最近更新 更多