我正在尝试(使用PHP)读取两个字节(16位)的二进制补码值,并返回带有符号的十进制数。
我不确定二进制补码应该如何运作,但是从php.net上得到的信息,我几乎能够显示我所期望的结果。我认为我遇到的问题是我没有得到任何负数值。
我所拥有的代码:
function _bin16dec($bin) {
// Function to convert 16bit binary numbers to integers using two's complement
$num = bindec($bin);
if($num > 0xFFFF) { return false; }
if($num >= 0x8000) {
return -(($num ^ 0xFFFF)+1);
} else {
return $num;
}
}
这段代码是某人在线上想出来的,但它是用Python写的,我不懂。
def twoscomp( x ) :
"This returns a 16-bit signed number (two's complement)"
if (0x8000 & x):
x = - (0x010000 - x)
return x
该应用程序以2的补码形式从陀螺仪读取每个轴的两个字节。
提前感谢!
Sam