题
例如,如果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位。这可以是1
或0
。这是二进制2个值,或10
。
现在2位,其可以是00
,01
,10
或11
这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位,范围和可表示将取决于所使用的系统而不同的数字量。