-128 10000000 または 110000000 の表現はそうですか? 表現はビット依存ですか?
はい、2 の補数表現はビット依存です
-128 を 10000000 と書く代わりに、単純に下位範囲 -127 を 8 ビットにしない理由
2^8 = 256. したがって、どの表現スキームを使用しても、256 の異なる値を表現できるはずです。
円を描くと、2 の補数系がいかに優れているかがわかります。
最初にこの表を見てください:
Bits Unsigned 2's complement
00000000 0 0
00000001 1 1
00000010 2 2
01111110 126 126
01111111 127 127
10000000 128 −128
10000001 129 −127
10000010 130 −126
11111110 254 −2
11111111 255 −1
2 の補数システムの場合、このシステムを理解するために円を描くことができます。
こちらが4bit版。自分で簡単に 8 ビット版を開発できます。この円は、この 2 の補数系が実際に何であるかを表しています。その循環システム。つまり、その表現は、指定した「スパン」に依存します。これが、負の数の 8 ビット バージョンが同じ負の数の 16 ビット バージョンと異なる理由です。丸で示した 4bit バージョンの同じ負の数を、表で示した 8bit バージョンと比較できます。
0000 0
1111 -1 0001 1
1110 -2 0010 2
1101 -3 0011 3
1100 -4 0100 4
1011 -5 0101 5
1010 -6 0110 6
1001 -7 0111 7
1000 -8
ちなみに、2 の補数演算は、コンピュータ内の「固定」幅の計算ストレージ (レジスタ、メモリなど) でうまく機能します。
第 1 世代のコンピューターでは、ネイティブの 10 進数演算を提供する傾向がありました。しかし、これは「補数」または「循環」スキームを支持してすぐに放棄されました。10 進演算はコンピューターの観点からは奇妙だからです。「私たちの指は10本ある」から当然だと思います。これらの指は、私たちの祖先の最初の計算ツールでした。10進法がとても自然だと思うのはそのためです。それは私たちの遺伝子に組み込まれています。