1

2の補数はどのように機能しますか?例えば:

5: 00000101
-5 (two's complement): 11111011

後者が251であるか-5であるかをどうやって見分けることができますか?

4

4 に答える 4

4

それらは両方であり、どれもありません。11111011は単なるビット パターンです。算術演算などの操作で使用される場合、固有の意味を取得するだけです。

使用する演算によって、解釈が異なる場合とそうでない場合があります。2 の補数が使用される理由は、たとえば整数演算では、符号付きまたは符号なしとして解釈しても、演算のビットパターンの結果が正しいためです。

于 2012-09-20T01:25:28.447 に答える
2

できません!これが、多くの言語が符号付きおよび符号なしの型を持っている理由です。そのため、コンパイラ/インタプリタは、バイナリ値を符号付き(2の補数)として解釈するか、符号なしとして解釈するかを認識します。

于 2012-09-20T01:09:48.217 に答える
1

2 の補数をよりよく理解するには、ウィキペディアのページをご覧ください。

ビット列の解釈は、そのデータを使用する命令によって異なります。変数を符号なしとして宣言すると、そのビットは通常の 2 進数として解釈されます。それ以外の場合、符号付き変数として宣言すると、2 の補数値として解釈されます。

于 2012-09-20T02:04:07.243 に答える
1

符号付き整数の場合、最上位ビットが符号ビットとして機能します。符号ビットが 0 の場合、数値は正です。符号ビットが 1 の場合、数値は負であり、2 の補数形式で表され、コンパイラはこれらの負の整数を処理するために 2 の補数演算を行います。

ただし、「unsigned int」として明示的に宣言された符号なし整数の場合、符号ビットも 2 の補数解釈もありません。

したがって、signed 8 bin int 11111011 は 5 の 2 の補数であるため、-5 を表しますが、unsigned 8 bit int 11111011 は 251 です。

于 2012-11-16T19:44:21.530 に答える