1

私はクラスで尋ねられました:

次の 10 進数を 2 の補数の 2 進数として表すのに必要な最小ビット数は? -64 31 128

  1. では、まず、1 の補数バイナリと 2 の補数バイナリの違いは何ですか? 10 進数を 2 の補数の 2 進数表現に変換するにはどうすればよいですか?

  2. また、その10進数の複数の表現を持つことは可能ですか? 必要な最小ビット数を調べるにはどうすればよいですか?

4

1 に答える 1

3
  1. 1の補数と2の補数の違い:

    • 1の補数では、負の数はすべてのビットが反転した正の数として表されます。たとえば、6は..000110であるため、-6は..111001になります。
    • 2の補数では、負の数は、すべてのビットが反転した正の数に1を加えたものとして表されます。したがって、たとえば-6は..111001 + 1=..111010になります
  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
于 2012-12-08T18:47:24.637 に答える