1

私が32ビットマシンで働いているとしましょう。符号ビットである MSB (最上位ビット) に関して、私の質問は、このアーキテクチャでどのように表されるかということです。

私の理解では、すべてのバイトに符号値があります。したがって、これが当てはまる場合、4 つの符号付きビットがあります。ここで何かが正しいか、欠けていますか。ありがとう!

4

4 に答える 4

5

バイトはビットのグループです。それらには固有の意味はなく、それらを構成するビットもありません。たとえば、これらの 4 バイトを符号付き整数として解釈することを選択した場合にのみ意味が与えられ、プラットフォームの設計者がそう言っているため、ビットはその意味を意味します。

実質的にすべての一般的なアーキテクチャでは、整数は2 の補数を使用して表されます。この意味は:

  1. 値全体 (すべてのバイトではなく) に対して符号ビットは 1 つしかありませんが、これは事実上の状態です。これは、単にプラットフォームの設計者が2 の補数を使用することを選択したためです。宇宙のすべての MSB に特別なものがあるからではありません。
  2. 符号なしの値には符号ビットはまったくありません (明らかに)。
于 2012-06-21T12:24:54.567 に答える
3

Cでの整数の特定の表現は、標準では指定されていません。ただし、実際には、ほとんどの(事実上すべて?)マシンは、負の数に2の補数表現を使用します。2の補数自体には符号ビットはありませんが、整数の最上位ビットは、負の数の場合は1、非負の数の場合は0になります。

于 2012-06-21T12:25:59.717 に答える
0

ほとんどのアーキテクチャでは、32ビットの符号付き整数は2の補数で格納されます。つまり、「符号ビット」は1つだけです(厳密に言えば1つではありません)。

于 2012-06-21T12:25:06.967 に答える
0

符号付き整数を使用している場合、コンパイラはバイトのグループを整数として扱い、そのグループには1つの符号ビットがあります。Cの用語:を使用する場合int16_t、2バイトには1つの符号ビットがあります。の場合int32_t、4バイトに1つあります。の場合signed char、各符号付き文字(= byte)には符号ビットがあります。

于 2012-06-21T12:26:08.330 に答える