有人可以请解释如何解决这样的问题?需要多少位来编码0到31(含)范围内的整数?
回答
“位”是“二进制数字”。这意味着(根据定义),它们是基数为2的数字系统中的数字。因此,对于每个列,您只会得到两个值(0或1),而不是您习惯的基本10系统(每列中数字为0-9)。
基10系统中的每列对应于10的幂 - 例如123是1 x 10^2 + 2 * 10^1 + 3 * 10^0。
Binary以同样的方式工作,除了基数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,因为即使有16种不同的表示形式,范围[0-15]包含16个不同的数字(计数它们!)。所以16本身就是第17个数字,因此需要5位来表示)。
我希望这个澄清事情!
在二进制中,最好考虑一列1和0。 每列表示2提升到某些权力。你从右到左读,最右边总是2^0次方,然后是2^1等等。
当2^0设置为0时,你会得到一个值0. 当2^0设置为1,你会得到1的值(任何提高到零的能量都是1.)
将二进制数1或0表示为打开或关闭。 你把他们各自的产出加起来。 每一列或0/1值都表示一个位。
000000 = 0
000001 = 1
000010 = 2
000011 = 3
000100 = 4
000101 = 5
000110 = 6
000111 = 7
等等。由于2^5 = 32,因此第6列需要是1,而不是第5列。因为我们从第零指数开始。
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等情况是成立的。
- 1. 需要多少位数来编码一个八位字节?
- 2. 范围从0到255的整数
- 3. 升压来,dynamic_bitset - 把一个整数值的范围内的位
- 4. 更快的算法来算多少指数值范围内
- 5. 需要更好的逻辑来找到范围内的回文数的计数
- 6. 给定一些整数范围,找到每个范围至少包含一个整数的最小集合
- 7. 需要在指定范围内生成一个随机整数
- 8. 找到一个范围内的整数
- 9. 整数范围内的整数
- 10. 如果需要但不在范围内,枚举的值是多少?
- 11. 计算一个整数需要多少位C
- 12. icCube内存 - 需要多少?
- 13. 编码包含/需要输出到JSON
- 14. 将[0-255]整数范围转换为[0.0-1.0]浮点范围
- 15. EXCEL多个范围 - 每个范围需要不同的答案
- 16. 在日期范围内有多少Januarys
- 17. 定位范围内的一个范围
- 18. 分割范围包含多个范围到一个范围数组中?
- 19. 计数排序范围总是需要在[0,k]中吗?
- 20. 计数的日期范围内有多少天是另一个日期范围
- 21. 检测整数是否在多个有效整数范围内
- 22. 范围(10)中的[[范围(10)]范围内的[[0]]和范围[10范围内的范围10中的[0]之间的区别是什么?
- 23. 查找范围内整数的数量
- 24. 计数范围内的整数
- 25. 每个位在整数范围内设置的次数
- 26. UnicodeEncodeError:“ASCII”编解码器在0-6位置无法编码的字符:顺序不在范围内(128)
- 27. pyodbc Netezza'ascii'编解码器无法编码位置0-2中的字符:序号不在范围内(128)
- 28. 一定范围内的邮政编码
- 29. 自定义编码0到31之间的ASCII字符在C#
- 30. 需要多长时间才能猜出指定范围内的用户密码?