为了账号安全,请及时绑定邮箱和手机立即绑定

如何判断 16 位二进制编码值是增加还是减少

如何判断 16 位二进制编码值是增加还是减少

Helenr 2022-05-11 14:40:12
我试图确定一个数字是增加还是减少。编码器返回一个无符号的 16 位值,如果编码数据增加或减少,该值将增加、减少或保持不变。我每 x 秒获取编码值并将其附加到列表中,并且我试图比较这些值以查看它们是否在增加/减少。我将每个值与先前获得的值进行检查,但我遇到的唯一问题是在 65535 处,数据回绕到 0。我将如何解释这些实例?
查看完整描述

2 回答

?
四季花海

TA贡献1811条经验 获得超5个赞

您需要确定读数之间数据可以增加的数量限制。然后检查是否已超过。例如,如果您的限制是 100,而之前的值是 65500,您需要检查新值是否在 655001-655350-65 范围内。

例如:

if new_val > old_val or \
   new_val < (old_val + tolerance) % 65536:

...tolerance您要识别的最大增加在哪里。


查看完整回答
反对 回复 2022-05-11
?
GCT1015

TA贡献1827条经验 获得超4个赞

令人难以置信的是,在两次测量之间,值的变化超过了其总范围的一半(如果确实如此,您无法确定它的移动方式),因此如果您得到的差异大于 32,768,请从中减去 65,536,如果您得到小于 -32,768 的差值加上 65,536。

这样,如果值从例如 65,535 变为 2(原始差异为 -65,533),您将注册为 +3(= -65,533 + 65,536)的差异,这就是您想要的。如果您以另一种方式越过环绕,则相同的过程会反过来发生。


查看完整回答
反对 回复 2022-05-11
  • 2 回答
  • 0 关注
  • 161 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号