用n位表示多少个值?

时间:2010-09-28 01:26:15

标签: binary bits

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

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

我的思维过程是否正确?如果没有,有人可以解释我错过了什么吗?如何将其推广到n位?

7 个答案:

答案 0 :(得分:51)

2 9 = 512个值,因为这是你可以拥有多少个零和一个组合。


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

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

two's complement中,通常用于表示二进制中的整数,您将拥有:

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

答案 1 :(得分:10)

你缺少什么:零是一个值

答案 2 :(得分:2)

解决问题的更好方法是从小处着手。

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

现在有2位,可以是00011011这是4个值,或者是二进制的100 ...模式?

答案 3 :(得分:1)

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

顺便说一下,一个好的后续练习就是概括一下:

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

答案 4 :(得分:1)

不想在这里给出答案是逻辑。

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

就像在基数10中,你有10个不同的数字值表示你有2个(从0到99):0到99会产生100个数字。如果你进行计算,你就有一个指数函数

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

答案 5 :(得分:1)

有一种更容易思考的方法。从1位开始。这显然可以代表2个值(0或1)。添加一点后会发生什么?我们现在可以表示两倍的值:我们可以在添加0之前表示的值以及我们之前可以用1附加的值表示的值。

因此,我们用n位表示的值的数量只有2 ^ n(2到幂n)

答案 6 :(得分:1)

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