私はクラスで尋ねられました:
次の 10 進数を 2 の補数の 2 進数として表すのに必要な最小ビット数は? -64 31 128
では、まず、1 の補数バイナリと 2 の補数バイナリの違いは何ですか? 10 進数を 2 の補数の 2 進数表現に変換するにはどうすればよいですか?
また、その10進数の複数の表現を持つことは可能ですか? 必要な最小ビット数を調べるにはどうすればよいですか?
私はクラスで尋ねられました:
次の 10 進数を 2 の補数の 2 進数として表すのに必要な最小ビット数は? -64 31 128
では、まず、1 の補数バイナリと 2 の補数バイナリの違いは何ですか? 10 進数を 2 の補数の 2 進数表現に変換するにはどうすればよいですか?
また、その10進数の複数の表現を持つことは可能ですか? 必要な最小ビット数を調べるにはどうすればよいですか?
1の補数と2の補数の違い:
2進数での10進数の複数の表現:2進数での数値の表現は一意ですが、1つの例外があります。1の補数では、数値0は0と..111の両方として記述できます。
どちらの場合も、負の数は左側に1の無限の文字列を含む表現であることに注意してください。実際には、使用可能なビット数は有限であるため、右端のビットの一部のみを使用します。慣例では、左端のビットが1の場合、この最初のビットの前の左側の1つに無限の文字列があると想定します。これは、左端のビットが数値の符号を与えることを意味します。1の場合、数値は負であり、0の場合、数値は正です。残りのビットは大きさを示します。(もちろん、これが当てはまらない符号付き数値を表す他の方法があります。)
数値を表すために必要な最小ビット数は、1と2の補数の間で異なる場合があります。たとえば、1の補数は-8を表すために少なくとも5ビットを必要としますが、2の補数は4で間に合わせることができます。
+8 in binary: 1000
-8 in 1's complement: 10111
-8 in 2's complement: 1000