44

たとえば、 の場合n=9、9 桁の 2 進数 (ビット) で表すことができる値の数は?

私の考えでは、これらの 9 ビットのそれぞれを 1 に設定すると、それらの 9 桁が表すことができる最大の数ができるようになります。したがって、最高値は10 進数1 1111 1111で等しいです。511したがって、9 桁の 2 進数で 511 の異なる値を表すことができると結論付けています。

私の思考プロセスは正しいですか?そうでない場合、誰かが私が欠けているものを親切に説明してもらえますか? どうすればnビットに一般化できますか?

4

7 に答える 7

58

2 9 = 512 個の値。これは、0 と 1 の組み合わせがいくつあるかということです。


ただし、これらの値が何を表すかは、使用しているシステムによって異なります。符号なし整数の場合は、次のようになります。

000000000 = 0 (min)
000000001 = 1
...
111111110 = 510
111111111 = 511 (max)

バイナリで整数を表すために一般的に使用される2 の補数では、次のようになります。

000000000 = 0
000000001 = 1
...
011111110 = 254
011111111 = 255 (max)
100000000 = -256 (min) <- yay integer overflow
100000001 = -255
...
111111110 = -2
111111111 = -1

一般に、kビットを使用すると、2 k 個の値を表すことができます。それらの範囲は、使用しているシステムによって異なります。

符号なし: 0 ~ 2 k -1
符号あり: -2 k-1~ 2 k-1 -1

于 2010-09-28T01:29:40.243 に答える
10

あなたが見逃しているもの:ゼロは値です

于 2010-09-28T01:27:58.970 に答える
2

それを解決するためのより良い方法は、小さなことから始めることです。

1ビットから始めましょう。またはのいずれ10です。これは2つの値、つまり10バイナリです。

これで2ビットになります。これは、、、または4つの値、またはバイナリのいずれかになります...パターン00を参照してください。011011100

于 2010-09-28T01:33:51.590 に答える
1

これについて考える簡単な方法があります。1ビットから始めます。これは明らかに2つの値(0または1)を表すことができます。少し追加するとどうなりますか?これで、2倍の値を表すことができます。0を追加して以前に表現できた値と、1を追加して以前に表現できた値です。

したがって、nビットで表すことができる値の数は2 ^ n(2のn乗)です。

于 2010-09-28T01:32:10.083 に答える
1

わかりました、それはすでに「リーク」しているので: あなたはゼロを逃しているので、正解は512(511 が最大のものですが、1 から 511 ではなく 0 から 511 です) です。

ところで、これを一般化することは良いフォローアップの練習になるでしょう:

How many different values can be represented in n binary digits (bits)?
于 2010-09-28T01:29:32.423 に答える
1

ここで答えを出したくありませんが、これが論理です。

各桁に 2 つの可能な値があります。あなたはそれらのうちの9つを持っています。

基数 10 のように、数字ごとに 10 個の異なる値がある場合、そのうちの 2 つがあるとします (0 から 99 になります): 0 から 99 は 100 個の数字になります。計算を行うと、指数関数があります

base^numberOfDigits:
10^2 = 100 ;
2^9 = 512
于 2010-09-28T01:30:49.847 に答える
1

あなたが見逃しているのは、どのエンコーディングスキームが使用されているかです。2 進数をエンコードするには、さまざまな方法があります。符号付き数値表現を調べます。9 ビットの場合、表現できる数の範囲と数は、使用するシステムによって異なります。

于 2010-09-28T01:43:00.460 に答える