如何将18.25℃转换为DS18B20对应的16位温度二进制?
DS18B20温度转16位二进制步骤(以18.25℃为例)
DS18B20的16位温度值采用补码格式存储,正数的补码与原码一致,具体转换步骤如下:
1. 拆分温度的整数与小数部分
18.25℃可拆分为:
- 整数部分:18
- 小数部分:0.25
2. 转换整数部分为二进制
将整数18转为二进制:18 = 16 + 2 = 2^4 + 2^1 → 二进制为 10010
由于是正数,16位补码的高8位需补前导0,最终整数部分的8位二进制为:00010010
3. 转换小数部分为二进制
DS18B20的小数部分对应8位二进制,每一位的权重依次为 2^-1(0.5)、2^-2(0.25)、2^-3(0.125)……2^-8(0.00390625)。
0.25恰好等于2^-2,对应小数部分二进制的第6位(从0开始计数,bit6为1,其余位为0),因此小数部分的8位二进制为:00100000
4. 组合为16位二进制
将整数部分的8位与小数部分的8位拼接,得到最终的16位温度二进制:00010010 00100000(或连续写为0001001000100000)
验证(可选)
将16位二进制转回十进制:
- 整数部分:
00010010= 18 - 小数部分:
00100000= 00.5 + 10.25 + 00.125 + ... + 00.00390625 = 0.25 - 总和为18.25℃,转换正确
内容的提问来源于stack exchange,提问作者NedOoO
相关产品推荐
相关产品推荐

