DPS310温度校准系数12位补码转换疑问求助
DPS310 12位补码温度系数c0、c1的正确转换结果确认
c0(十六进制0DE)的正确转换
DPS310的c0是12位补码格式,十六进制0DE对应的12位二进制是000011011110(补前导零至12位)。由于最高位为0,属于正数,直接计算十进制值:
0*2^11 + 0*2^10 + 0*2^9 + 0*2^8 + 1*2^7 + 1*2^6 + 0*2^5 + 1*2^4 + 1*2^3 + 1*2^2 + 1*2^1 + 0*2^0 = 128 + 64 + 16 + 8 + 4 + 2 = 222
c1(十六进制EDA)的正确转换
c1同样是12位补码,十六进制EDA对应的12位二进制是111011011010。由于最高位为1,属于负数,需按补码规则转换:
- 对二进制位取反:
000100100101 - 取反结果加1得到原码:
000100100110 - 计算原码的十进制值为294,最终结果为
-294
关于错误转换的说明
- 将
0DE按16位无符号数转换得到3874,是混淆了数据位宽,DPS310的c0/c1为12位补码,仅需处理低12位数据。 - 忽略前导零得到34的操作错误,12位补码必须保留完整的12位来判断符号位和计算数值,前导零是12位格式的一部分,不能丢弃。
内容的提问来源于stack exchange,提问作者Anubhav Shriwastava
相关产品推荐
相关产品推荐

