ZHCADY9 April   2024 LM73 , LM75B , LM95071 , TMP100 , TMP101 , TMP102 , TMP103 , TMP104 , TMP107 , TMP1075 , TMP108 , TMP112 , TMP114 , TMP116 , TMP117 , TMP121 , TMP122 , TMP123 , TMP124 , TMP126 , TMP144 , TMP175 , TMP1826 , TMP1827 , TMP275 , TMP400 , TMP401 , TMP411 , TMP421 , TMP422 , TMP423 , TMP431 , TMP432 , TMP435 , TMP451 , TMP461 , TMP464 , TMP468 , TMP4718 , TMP75 , TMP75B , TMP75C

 

  1.   1
  2.   摘要
  3.   商标
  4. 1引言
    1. 1.1 二进制补码
      1. 1.1.1 二进制补码特征
    2. 1.2 Q 格式
    3. 1.3 常见温度数据格式
    4. 1.4 高精度温度数据格式
  5. 2代码示例
    1. 2.1  16 位(采用 Q7 表示法)
      1. 2.1.1 属性
      2. 2.1.2 C 代码
    2. 2.2  12 位(采用 Q4 表示法)
      1. 2.2.1 属性
      2. 2.2.2 C 代码
    3. 2.3  13 位(采用 Q4 表示法)(EM=1)
      1. 2.3.1 属性
      2. 2.3.2 C 代码
    4. 2.4  13 位(采用 Q4 表示法)
      1. 2.4.1 属性
      2. 2.4.2 C 代码
    5. 2.5  14 位(采用 Q6 表示法)
      1. 2.5.1 属性
      2. 2.5.2 C 代码
    6. 2.6  TMP182x 格式
      1. 2.6.1 属性
      2. 2.6.2 C 代码
    7. 2.7  14 位(采用 Q5 表示法)
      1. 2.7.1 属性
      2. 2.7.2 C 代码
    8. 2.8  8 位(无 Q 表示法)
      1. 2.8.1 属性
      2. 2.8.2 C 代码
    9. 2.9  11 位(采用 Q3 表示法)
      1. 2.9.1 属性
      2. 2.9.2 C 代码
    10. 2.10 不采用二进制补码的器件
      1. 2.10.1 属性
      2. 2.10.2 C 代码
  6. 3其他编程语言
    1. 3.1 解析
    2. 3.2 二进制补码
    3. 3.3 丢弃未使用的位
    4. 3.4 应用 Q 格式
  7. 4总结
  8. 5参考资料
  9. 6附录:Q 应用源代码
  10. 7附录:器件概要表

Q 格式

Q 格式是一种对有理数进行编码的方法。通常会保留四位或更多位来表示 1 和 0 之间的小数值。以 Q 格式存储的有理数数据可以高效地处理和存储,而无需进行浮点运算,该运算在微控制器代码中有时是被禁止的。在本文档中,Q 后面的数字是指小数位的位数。如表中所示,其他资料指出了除小数位以外的整数位数,其中 m 是包括符号在内的整数位数,n 是小数位数。所有参考资料都一致认同一种简便的 Qn 表示法,即在 Q 后面只列出 n 个小数位,这与本文档是一致的。

表 1-3 Q 表示法变体
资料来源Q 格式Q 示例示例详细信息
本文档QnQ4

共 12 位

8 个整数位,含符号

(7 个整数位,无符号)

4 个小数位

变体 1Qm.nQ8.4
变体 2 (TI)Q(m-1).nQ7.4
变体 3 (ARM)Qn.mQ4.8

Q 格式也可以称为定点数据格式。定点数据具有预先配置的分辨率,而浮点数据具有可变的分辨率。下表展示了所选 Q 格式的分辨率与位权重之间的关系。虽然可以使用更高的 Q 格式,但目前温度传感器中未采用相关格式。

表 1-4 Q 格式比例因子

Q0

Q1

Q2

Q3

Q4

Q5

Q6

Q7

1

0.5

0.25

0.125

0.0625

0.03125

0.015625

0.0078125

1

1/2

1/4

1/8

1/16

1/32

1/64

1/128

20

2-1

2-2

2-3

2-4

2-5

2-6

2-7

例如,如果已知整数数据采用 Q4 格式,则可以通过将数据乘以 0.0625、1/16 或 2-4 来转换为有理数 Q 值,因为这些值是相等的。