在完成课程学习的过程中,我遇到了一个从TMP102 sensor读取温度的函数(仅需要测量正温度)。
该函数首先使用I2C读取MSB和LSB。由于温度数据 12位且左对齐,因此功能如下:
temp = ( (MSB << 8) | LSB) >> 4
我不明白为什么这样做。有人可以帮我解释上面的代码行是如何与12位和左对齐的数据相关的?
答案 0 :(得分:7)
让v
成为温度值的一点,p
是右边的填充位,那么你有
MSB = vvvvvvvv
LSB = vvvvpppp
---
MSB << 8 = vvvvvvvv 00000000
(MSB << 8) | LSB = vvvvvvvv vvvvpppp
((MSB << 8) | LSB) >> 4 = 0000vvvv vvvvvvvv
在最后一行中,您会看到正确的表示形式为16位值(高4位始终为0
)。