第8回(16Bit幅の補数計算検証)pythonのint型変数の扱いには少し注意が必要です。python3のint型は最大のBit幅に制限なくShortやLongといった区別がなくなりました。そのため前回の16Bit長のレジスタ値のマイナス表現でpythonが認識しているbit幅に拡張する場合どう描くべきかをC言語のプログラムを使い見てみます。いう2進数になりこれを1の補数といいます。8bitで表される最大数は255なのであふれた分を計算すると5という10-5の答えが得られます。2進数の10000000は-0というおかしな値が存在しているためで、この分符号反転した時点で1を足さないとつじつまが合わないということが起きます。このようにビット反転して1を足した補数を2の補数と呼びます。となり2進数でも正しい値が出てきます。ここまでなお_はスペースを示します。short(32bit)の変数に0xfff5(16bit)をいれて単純にマイナスに変換すると32Bit幅で2の補数値が計算され0xffff000bとなります。そのため下位16ビット幅で2の補数を計算してみると0xfffffff5という値に拡張されていることがわかります。(2番目のprintf)念のため32Bit長の-11が32bitはばで0xfffffff5であることを確認してみます。ここまでということで16Bitのマイナス値をPythonの持つ不確定長の整数型に上記の式で拡張できることが検証できます。今回使用したCのソースとPythonのソースはここからダウンロードできます。▲お問い合わせフォームはこちらお客様のビジネスの規模・内容に従い、最適なアプリケーションをご紹介します。アプリケーションの導入・連携支援は、ぜひ、システムキューブにお任せください。