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。例如,掩码 0xF 等同于 0b1111,并且只保留四个最低有效位。
/* right shift */
unsigned char x = 0x23;
unsigned char y = x >> 4;
/* y is 0x02 */

/* mask to discard bits */
unsigned char z = x & 0xF;
/* z is 0x03 */
  • 在 Excel 中,乘法除法运算相当于左移和右移。例如,乘以 23 相当于左移 3。右移可以使用 *2-b 或 /2b 来实现。以这种方式进行右移时,结果必须舍入为整数以丢弃低位。这里使用 INT() 函数来向下舍入。
  • BITAND() 可用于掩码操作,但要注意此函数接受十进制输入并提供十进制输出。这可能会让使用 BITAND() 进行掩码操作变得令人困惑。与 HEX2DEC() 类似,BITAND() 至少可以处理 32 位的数据。
  • 以下 Excel 示例展示了对 0x23 执行移位和丢弃操作,如其他语言示例中的操作相同。请注意,在此示例中,Excel 在 C 列中显示了十进制结果。我们的结果恰好与其他示例中以十六进制显示的结果相同。第 1 行是移位操作,第 2 行是丢弃操作。
表 3-5 位丢弃操作的 Excel 示例
ABC
123=HEX2DEC(A1)=INT(B1*2^-4)
223=HEX2DEC(A2)=BITAND(B2,HEX2DEC("F"))
表 3-6 位丢弃操作的 Excel 计算结果
A B C
1 23 35 2
2 23 35 3
  • JavaScript 和 Python 支持移位以及按位与。
/* JavaScript */
/* right shift */
let x = 0x23
let y = x >> 4
/* y is 0x2 */

/* mask to discard bits */
let z = x & 0xF
/* z is 0x3 */
# Python
# right shift
x = 0x23
y = x >> 4
# y is 0x2

# mask to discard bits
z = x & 0xF
# z is 0x3