2010-11-19 35 views
0

我需要此帮助计算所需的位

我被问到无符号整数范围是1到10亿,需要多少位!

我们该如何计算?

谢谢

UPDATE !!!!

这是我想知道,因为interviwer说

+1

2迷惑你哪一部分基地?你能更具体地说明你无法弄清楚什么吗? – 2010-11-19 19:36:37

+3

如果你的面试官说17,那么他要么显然是错的,要么你没有给我们整个问题。 – 2010-11-19 19:38:32

+0

你的面试官是白痴,或者你错误地提出了这个问题。 17位将得到你从0到131071的任何数字。如果你从1开始,你可以表示数字高达131072. – nmichaels 2010-11-19 19:40:14

回答

3

计算log2(1000000000)和圆形它。它可以达到30位。

例如,在Python中,你可以这样计算的话:

>>> import math 
>>> math.ceil(math.log(1000000000, 2)) 
30.0 
6

取1十亿日志基地2和围捕。

或者,您应该知道整数(超过40亿个值)需要32位,因此对于20亿您需要31位和10位,30位。

另一个方便的事情要知道,每10位增加的数量可以表示一个因素刚刚超过1000(1024),因此,对于1000,你需要10位,100万需要20位和10亿需要30位。

2
2^10 = 1024 
2^10 * 2^10 = 2^20 = 1024*1024 = 1048576 
2^10 * 2^10 * 2^10 = 2^30 = 3 * 1024 ~= 1,000,000 

=> 30位