这个问题可能不是典型的stackoverflow,但我不知道在哪里问这个小问题。
问题:
查找十进制数16的二进制表示中的位数?
现在我尝试使用公式$ 2 ^ n = 16 \ Rightarrow n = 4 $来解决这个问题但是我的模块建议的正确答案是5.有人能解释一下吗?
在读完一些答案之后,(在我接受正确的答案之前我还有10个以上的薄荷糖)我认为这可能是一个解释,这将与数学公式一致,
对于16代表我们需要代表17个符号(0,16),因此$ 2 ^ n = 17 \ Rightarrow n = 4.08746 $但是因为n需要是一个整数然后$ n = 5 $
答案 0 :(得分:3)
想想二元是如何工作的:
Bit 1: Add 1
Bit 2: Add 2
Bit 3: Add 4
Bit 4: Add 8
Bit 5: Add 16
因此16将是:10000
答案 1 :(得分:2)
使用4位,您可以将数字表示为0到15 。
所以是的,你需要5位代表16。
答案 2 :(得分:1)
Decimal - 16 8 4 2 1
Binary - 1 0 0 0 0
因此,对于小数31以外的任何内容,您只需要5位。
答案 3 :(得分:0)
这是一个经典的fencepost错误。
如您所知,计算机喜欢从0开始计数。
因此,要表示16,您需要位0,1,2,3和4(= floor(log2(16)))。
但实际上包含0到4位,则需要5位。