44

例如,如果n=9,那么 9 个二进制数字(位)可以表示多少个不同的值?

我的想法是,如果我将这 9 位中的每一个都设置为 1,我将使这 9 位能够表示的最大数字成为可能。因此,最高值是十进制1 1111 1111中相等的值。511因此,我得出结论,9 位二进制可以表示 511 个不同的值。

我的思维过程正确吗?如果没有,有人可以解释一下我错过了什么吗?我如何将其概括为n位?

4

7 回答 7

58

2 9 = 512 个值,因为这就是您可以拥有的 0 和 1 组合的数量。


然而,这些值代表什么取决于您使用的系统。如果它是无符号整数,您将拥有:

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

二进制补码(通常用于表示二进制整数)中,您将拥有:

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 位,可以是00, 01,10或者11那是 4 个值,或者100是二进制的……看到模式了吗?

于 2010-09-28T01:33:51.590 回答
1

好的,因为它已经“泄露”了:你漏掉了零,所以正确答案是512(511 是最大的,但它是 0 到 511,而不是 1 到 511)。

顺便说一句,一个好的后续练习将概括这一点:

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

不想给你答案,这里是逻辑。

每个数字都有 2 个可能的值。你有 9 个。

就像在 base 10 中,你有 10 个不同的数字值说你有 2 个(从 0 到 99):0 到 99 有 100 个数字。如果你做计算你有一个指数函数

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

有一种更简单的方法来考虑这一点。从 1 位开始。这显然可以表示 2 个值(0 或 1)。当我们添加一点时会发生什么?我们现在可以表示两倍的值:我们之前可以表示的值附加一个 0 和我们之前可以表示的值附加一个 1。

所以我们可以用 n 位表示的值的数量只是 2^n(2 的 n 次方)

于 2010-09-28T01:32:10.083 回答
1

您缺少的是正在使用哪种编码方案。有不同的方法来编码二进制数。查看带符号的数字表示。对于 9 位,可以表示的数字的范围和数量将根据所使用的系统而有所不同。

于 2010-09-28T01:43:00.460 回答