私は (PHP で) 2 バイト (16 ビット) の 2 の補数値を読み取り、符号付き 10 進数を返そうとしています。
2つの補数の計算がどのように機能するかはわかりませんが、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 の補数形式で 2 バイトを読み取ります。
前もって感謝します!
サム