【发布时间】:2012-04-01 13:54:49
【问题描述】:
所以这个传感器通过返回两个(高和低)有符号字节返回 -500-500 之间的有符号值。我如何使用这些来确定实际值是多少?我知道我需要做 2 的补码,但我不知道怎么做。这就是我现在拥有的 -
real_velocity = temp.values[0];
if(temp.values[1] != -1)
real_velocity += temp.values[1];
//if high byte > 1, negative number - take 2's compliment
if(temp.values[1] > 1) {
real_velocity = ~real_velocity;
real_velocity += 1;
}
但它只是返回正值的负值。例如,-200 返回字节 255(高)和 56(低)。添加这些是 311。但是当我运行上面的代码时,它告诉我 -311。感谢您的帮助。
【问题讨论】:
-
请指定语言(并先搜索)。
-
我已经搜索过了,但我只找到了大约 1 个字节的内容,并且没有合并两个。
-
标题说的是 16 位字节,但文本暗示的是 8 位字节。是哪个?
-
如果它们是“16 位有符号字节”,那么您的工作就完成了。但我怀疑你真的像现代世界的大多数人一样拥有 8 位字节,所以你的工作就是狡猾。