1

私は二進数システムを学ぼうとしていますが、ほとんど新しいです。2 進数の会話、足し算、引き算などに関するいくつかの基本的な章を終えたところです。

しかし、今は 1 の補数と 2 の補数に関する章を見ています。符号付きの数値、符号付きの大きさ、および 2 進数が 8 ビット、16 ビットなどでメモリに格納される方法を知っていますが、問題は、なぜ 1 の補数と 2 の補数なのか理解できなかったことです。また、なぜ 2 の補数を使用する必要があるのか​​、なぜそれが優れているのかなどについても説明します。

私は、1 の補数と 2 の補数に変換するためのガイドラインがある本に従っています。しかし、なぜ 1 の補数と 2 の補数なのかは説明されていません。

ですから、それをより深く理解するための助けが必要です。2進数システムなどに関する本の提案は大歓迎です。

よろしくお願いします ロビン

4

3 に答える 3

2

1 の補数は単にビット単位の NOTゲートです。つまり、1011 は 0100 になります。

2 の補数は、加算と減算の規則に従うため、符号付き整数の表現に最も一般的に使用されます。1111 に 1 を加算すると、0000 になります。したがって、1111 は -1 になります。

于 2016-01-18T11:09:53.110 に答える
0

1 の補数は単純にビット単位の NOT (つまり、001 が 110 になる) であり、最終的に 2 つのゼロ (111 と 000) が返されるため、符号の異なる数値の加算を実行するとき (および 0 を超えるときは常に注意する必要があります) )。ただし、否定をハードウェアで実装するのは非常に簡単です (単一の並列操作です)。

2 の補数は範囲を調整するため、正の数よりも負の数が 1 つ多くなります (8 ビット数の場合、範囲は -128 から 127 です) が、何も説明する必要はなく、0 は 1 つしかありません。数値の否定は少しコストがかかります (1 つの並列ビット フリップとそれに続く加算) が、これはおそらくはるかに簡単な加算回路によって補償されます。

符号ビットは、単純に最上位ビットを使用して負または正の信号を送信します。基本的に、1 の補数のすべての欠点があります。数値を否定する (ビットを反転する) のは非常に簡単です。

オフセット番号もあります。「すべてのビットが 0」の数値は実際には「最も負の数」を意味し、「最上位のビット 0 のみ」は「数値のゼロ」を意味します。これは、たとえば、物理的なものの変位を制御するために数値を使用している場合に魅力的です (すべてゼロは一方の端まで、すべてはもう一方の端まですべて 1 で、「ゼロ」は真ん中にあります)。 .

于 2016-01-19T09:49:28.890 に答える
0

任意のシステムを使用できますが、一部には短所または長所があります。

1 の補数は非常に簡単に理解できますが、統一された算術演算が提供されないため (2 つの数値を加算する場合、オペランドの符号に応じて異なるケースを区別する必要があります)、ハードウェアで実装するにはコストがかかりすぎます。もう一つの問題は、2 つの 0 (負の 1 と正の 1) の存在です。

2 の補数は理解するのが少し難しいですが、非常に単純な一様演算を提供します。数値の符号が何であれ、同じ方法で数値を追加するだけです (たとえば)。したがって、それを実装すると、ハードウェアが安価で小型になります。

于 2016-01-18T11:59:08.060 に答える