3

私は (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 バイトを読み取ります。

前もって感謝します!

サム

4

2 に答える 2