一の補数計算機
二進数の全ビットを反転するか、十進整数から固定ビット幅の一の補数を計算します。
一の補数を計算
二進数または十進数の入力を選び、各ビットをゼロから一、一からゼロに反転します。
一の補数について
二進数の一の補数は、全ビットを反転して求めます。ゼロは一に、一はゼロになります。この操作はビット反転や論理NOTとも呼ばれます。手作業でも簡単ですが、コンピューターアーキテクチャ、デジタル回路、ネットワークプロトコル、符号付き二進演算の学習などで広く使われます。この計算機は二進数入力の長さを維持し、先頭のゼロや想定するレジスタ幅が結果に残るようにします。
十進整数を変換してから反転する場合、ビット幅が重要です。十進値 42 の最短の二進表現は 101010 ですが、八ビットのレジスタでは 00101010 として格納されます。八か所すべてを反転すると 11010101 となり、符号なし整数として解釈すると 213 です。幅が違えば、追加された先頭のゼロが一になるため、異なるパターンが得られます。そのため十進数モードでは 1 から 32 までの幅を指定し、その数の符号なしビットに収まらない値は受け付けません。
歴史的には、一の補数は符号付き整数の表現方式でもありました。正の値には通常の二進表現を使い、負の値は対応する正の値のビットを反転して表します。この方式には、全ビットがゼロの正のゼロと、全ビットが一の負のゼロという二種類のゼロがあります。現代のプロセッサーの多くは、ゼロが一種類で演算回路を簡素化できる二の補数を使います。それでも一の補数演算はインターネットチェックサムで重要です。ワードをエンドアラウンドキャリー付きで加算し、最終的な和を反転します。
一の補数と二の補数を混同しないでください。二の補数は、固定幅の範囲内で一の補数に一を加えて得られます。この違いで表される負の値が変わるため、低レベルソフトウェアのデバッグでは特に重要です。この計算機は直接的なビット反転のみを行い、得られたビット列と、その符号なし十進解釈を表示します。宿題の確認、ビットマスク設計、論理ゲートの学習、固定幅変換の確認に役立ち、各桁を手作業で点検する必要がありません。
二進数入力では、反転したいビット列をそのまま入力してください。十進数入力では、元の数を格納できる十分なビット数を選びます。結果パネルには、ゼロ埋め後の元のビット列、反転した列、符号なし十進値が表示され、各段階をすぐに確認できます。
一の補数の例
| 入力 | 出力 | 説明 |
|---|---|---|
| 二進数 1010 | 0101 | 四つのビットをすべて反転します。 |
| 二進数 00001111 | 11110000 | 先頭のゼロの位置も保持され、一になります。 |
| 十進数 42、8 ビット | 11010101 (213) | 42 を 00101010 にゼロ埋めしてから反転します。 |
一の補数の計算方法
- ビット列がある場合は「二進数入力」、変換が必要な場合は「十進数入力」を選びます。
- 二進数の列または非負の十進整数を入力します。
- 十進数入力では、数を格納できる十分なビット幅を選びます。
- 「一の補数を計算」をクリックし、ゼロ埋め後の入力、反転ビット、十進数の結果を確認します。
一の補数に関するよくある質問
二進数の一の補数はどう求めますか?
ゼロをすべて一に、一をすべてゼロに置き換えます。元の幅を保つため、ビット数は変えません。
ビット幅で十進数モードの結果が変わるのはなぜですか?
先頭のゼロも固定幅の二進表現の一部で、反転すると一になるためです。同じ十進値でも、八ビットの反転と十六ビットの反転では結果が異なります。
一の補数と二の補数は同じですか?
いいえ。二の補数は選んだ幅の範囲内で一の補数に一を加えますが、一の補数はビットを反転するだけです。
一の補数演算の負のゼロとは何ですか?
歴史的な符号付き一の補数方式では、全ビットが一のパターンが負のゼロを表します。全ビットがゼロなら正のゼロです。これは多くのコンピューターが二の補数を採用する理由の一つです。
一の補数演算は現在どこで使われていますか?
IPv4、TCP、UDPなどのプロトコルのチェックサムに使われます。固定幅のワードをエンドアラウンドキャリー付きで加算し、最後の和を反転します。