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附录:器件概要表

二进制补码特征

表 1-1 3 位二进制补码表
二进制有符号值无符号值
0b100-44
0b101-35
0b110-26
0b111-17
0b00000
0b00111
0b01022
0b01133

此表列出了 3 位二进制补码数的整个取值范围。低位计数使我们能够轻松查看所有可能的值并观察二进制补码编码中的共同特征。

以下是关于二进制补码的一些要记住的事实:

  • 最高有效位表示符号。
  • 可以表示的最大数是 0 后跟全部 1 的二进制数,即此处所示的 0b011。
  • 可以表示的最大绝对值是 1 后跟全部 0(此处为 0b100),但这始终是负数
  • 在二进制中,全 1 始终等于 -1。
  • 将 -1 加上 +1 会导致溢出到 0,这是预期的数学结果。

在下面简化的表格中,我们可以看到相同的特征适用于 8 位二进制补码编码。请注意,“有符号值”列描述了 8 位 C 数据类型 int8_t,“无符号值”列描述了 8 位 C 数据类型 uint8_t。

表 1-2 8 位二进制补码表
二进制 十六进制 有符号值 无符号值
0b10000000 0x80 -128 128
0b10000001 0x81 -127 129
... ... ... ...
0b11111101 0xFD -3 253
0b11111110 0xFE -2 254
0b11111111 0xFF -1 255
0b00000000 0x00 0 0
0b00000001 0x01 1 1
0b00000010 0x02 2 2
... ... ... ...
0b01111110 0x7E 126 126
0b01111111 0x7F 127 127