例如,如果n=9,然后多少不同的值可以在9个二进制数字(比特)表示?

我的想法是,每一个这些9个比特,如果我设置为1,我将最高数量的可能,那些9位能够表示。因此,价值最高的是1 1111 1111相当于511十进制。我的结论是,因此,二进制的9位可以表示511个不同的值。

是我的思维过程是否正确?如果没有,可能有人善意解释我缺少的是什么?我怎么能推广到n位?

有帮助吗?

解决方案

2 9 = 512倍的值,因为这是

如何零和一的许多组合可以有

但什么这些值代表将取决于你所使用的系统上。如果它是一个无符号整数,你将有:

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

在一般情况下,与ķ可以表示2 ķ值的比特。他们的范围将取决于你所使用的系统上:

  

无符号:0〜2 ķ -1,点击   签名:-2 K-1 2 K-1 -1

其他提示

什么你错过:零是一个值

一个更好的方法来解决它是开始小。

让我们先从1位。这可以是10。这是二进制2个值,或10

现在2位,其可以是00011011这4个值,或在二进制100 ...看到图案?

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

顺便提及,一个良好的后续运动。将概括这样:

How many different values can be represented in n binary digits (bits)?

在不希望这里给您的答案是什么逻辑。

您有在每个数字2个可能的值。你有他们的9。

像在基体10,你必须通过数字10个不同的值说你有他们的2(这使得从0至99):0〜99品牌100个的数字。如果你这样做了演算你有一个指数函数

base^numberOfDigits:
10^2 = 100 ;
2^9 = 512

有考虑这个更简单的方法。开始用1位。这可以明显地表示2个值(0或1)。当我们增加一点,会发生什么?现在,我们可以尽可能多的值代表两次:值我们可以代表前,用0和所附的值,我们可以前用1所附

表示

所以值的数量,我们可以用n位表示仅仅是2 ^ N(2的n次幂)

你缺少的东西是正在使用哪个编码方案。有不同的方式来编码的二进制数。看看有符号数处理。为9位,范围和可表示将取决于所使用的系统而不同的数字量。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top