知道代表数字的位数

时间:2016-11-24 21:37:30

标签: algorithm

我了解到为了确定表示数字 n 所需的位数是通过取n的对数,即 log(n) (基数) 2)。但是,我不相信!看看我的例子:

如果是n=4,那么我需要log4 = 2 bits代表4,但是4是(100)二进制,显然是3位!!

有人可以解释原因吗? 谢谢。

2 个答案:

答案 0 :(得分:1)

你确定你不是在谈论n位安排吗?

有2位,你有4个不同的序列:

std::list<Stimulation*> configuration;

数字4实际上是二进制的100,但我怀疑你混合了这些概念。

答案 1 :(得分:1)

对于大多数直接方案,您将ceil(log2(N+1))log2表示为浮动。

在纯积分中,一个天真的方案是将(积分div,因此截断)数除以2直到得到零的结果(例如4/2 = 2,2 / 2 = 1,1 / 2 = 0 - 三个除以零,因此需要3位。

更多advanced schemes exist,但走这条路可能会损害你的性能 - 现代CPU有instructions来检测msb设置为1的位置,这些指令需要很少的CPU周期