浮点python上的按位xor

时间:2018-04-16 19:17:41

标签: python math floating-point bitwise-xor lorawan

我想在Python中构建温度测量应用程序(在资源受限的物联网设备上)。我将测量传感器的温度,将其与之前的测量值进行比较,如果新测量值在某个允许的偏差范围内,则仅将数据发送到服务器。所以:

1)测量传感器的温度

2)检查测量值是否偏离先前的测量值超过某个设定偏差

示例

先前的测量值为24.0 C,允许偏差为0,3 C

1)测得的温度为23.5℃

2)测量偏差超过允许范围。发送到服务器

我最初的想法是对前一个和当前测量做一个按位xor,然后从允许的偏差中减去它。

如果结果是肯定的 - >数据未发送

如果结果是否定的 - >发送数据

我在Python中努力做到这一点,并希望得到一些帮助。或者,任何有关如何以不同方式做到这一点的建议都将受到高度赞赏!

1 个答案:

答案 0 :(得分:2)

没有为浮点类型定义XOR。 XOR是一个布尔运算,因此它基本上以两位运算并产生一位。它适用于整数,因为整数值和用于表示它们的位之间存在紧密关联(每个位表示指定的2的幂,或者是符号位)。因此,按位XOR运算对两个整数中的每个位位置执行XOR。

在浮点数中,浮点值与用于表示它们的位之间没有紧密关联。有些位用于指数字段,对它们进行异或会对表示的值产生奇怪的影响。其他位在有效数(分数)字段中,但它们的值取决于指数字段,并且对具有不同指数的两个浮点数的有效位进行异或运算也会产生奇怪的效果。

要找到两个浮点值的差值,只需从另一个中减去一个(使用正常的浮点减法运算)。如果您只是想知道差异的大小,而不是它的符号,请取减法结果的绝对值。