为什么要将原始数据除以16?

时间:2015-03-10 13:55:58

标签: math hex imp squirrel

http://datasheets.maximintegrated.com/en/ds/DS18B20.pdf

阅读第3页,操作 - 测量温度。以下代码用于获取临时值。我理解所有这些,除了为什么他们将数字除以16。

local raw = (data[1] << 8) | data[0];
    local SignBit = raw & 0x8000;  // test most significant bit
    if (SignBit) {raw = (raw ^ 0xffff) + 1;} // negative, 2's compliment

    local celsius = raw / 16.0;
    if (SignBit) {celsius *= -1;}

我还有另一种情况http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Sensors/Pressure/MPL3115A2.pdf第23页,第7.1.3节,温度数据。它只有12位,所以上面的代码也适用于它(只需将左移位改为4而不是8位),但同样,最终结果需要/ 16。我不知道它来自哪里。

1 个答案:

答案 0 :(得分:1)

原始温度数据以十六分之一为单位,因此必须将该值除以16才能将其转换为度数。