Encoding 对0到31(含)范围内的整数进行编码需要多少位?

Encoding 对0到31(含)范围内的整数进行编码需要多少位?,encoding,bits,Encoding,Bits,有人能解释一下如何处理这样的问题吗?在二进制中,最好考虑一列1和0。 每列代表2个提升到某个幂的值。从右到左阅读,最右边总是2^0次方,然后是2^1次方,以此类推 当2^0设置为0时,将得到一个值0。 当2^0设置为1时,您将得到一个值1(任何提升到零次方的值都是1) 将二进制1或0视为开启或关闭。 将“ON”按其各自的输出求和。 每列或0/1值表示一位 000000 = 0 000001 = 1 000010 = 2 000011 = 3 000100 = 4 000101 = 5 00011

有人能解释一下如何处理这样的问题吗?

在二进制中,最好考虑一列1和0。 每列代表2个提升到某个幂的值。从右到左阅读,最右边总是2^0次方,然后是2^1次方,以此类推

当2^0设置为0时,将得到一个值0。 当2^0设置为1时,您将得到一个值1(任何提升到零次方的值都是1)

将二进制1或0视为开启或关闭。 将“ON”按其各自的输出求和。 每列或0/1值表示一位

000000 = 0
000001 = 1
000010 = 2
000011 = 3
000100 = 4
000101 = 5
000110 = 6
000111 = 7
等等。因为2^5=32,所以第6列中必须有1,而不是第5列。因为我们从第0个指数开始

100000 = 32, so 6 bits, but it was only inclusive of 31, so we have to go down one value.
011111 = 31, so 5 bits, are absolutely necessary for representing the number 31.

你需要5比特。每个位可以有两个值中的一个,5位的联合数为2^5。通过考虑基本情况,可以显示2^n是组合n位的数量:

1位=两个可能的选择=2^1

然后是诱导步骤

如果我们有N位,那么我们可以把它分成1位加N-1位。如果公式为真,则最后n-1位有2^(n-1)个组合,并且对于这些组合中的每一个,第一位可以位于两个位置之一。因此,对于N位,有2*(2^(N-1))个组合,其等于2^(N-1+1),其等于2^N

这是归纳法的证明。第一步很简单(n=1),然后第二步告诉我们,如果n=1为真,那么n=2为真,然后n=3,然后n=4,等等。位是“二进制数字”。这意味着(根据定义),它们是以2为基数的数字系统中的数字。因此,与您习惯的base-10系统(每列中有数字0-9)不同,每列只得到两个值(0或1)

base-10系统中的每一列对应于10的幂——例如,123是1 x 10^2+2*10^1+3*10^0

二进制的工作方式相同,除了以2为基数而不是以10为基数。所以10011是1*2^4+0*2^3+0*2^2+1*2^1+1*2^0,十进制是19

现在,要计算出表示给定数字范围需要多少位(即数字),可以从一位开始,然后继续添加另一位,直到有足够的空间为止。例如,0-1将适合于单个位;50将至少需要6位,因为1仅对0-1足够,2位仅对0-3足够,3位仅对0-7足够,等等。直到达到5位仅对0-31足够,但6已足够

每增加一个位,就可以使由该多个位表示的可能数字数量翻倍(正如添加另一个以10为基数的数字可以表示十倍的数字)。0位可以表示0个数字。1位可以表示2个数字(0-1)。2位可以表示2*2个数字。3位可以表示2*2*2=2^3个数字。4位可以表示2^4个数字。等等

唯一值得考虑的问题是可表示数字的数量与这些表示对应的实际范围之间的区别。例如,如果有4位,则有2^4个不同的位组合(0000到1111)。但是如果你认为0000表示零,那么你可以在四位中所能容纳的最大数是15(不是16),因为即使有十六种不同的可能表示,范围[0—15]包括十六个不同的数字(计数它们!),因此16本身将是第十七个数,因此需要5位来表示)。 我希望这能澄清问题