我有24位二进制文件,这是
111010001100001010011000
等于15254168
我只"猜测"它的24位,因为二进制长度是24。
我想以编程方式生成所有24位小数。 (C,PHP或Python)
2 ** 24返回16.777.216
因此,还有其他16.777.216小数点(组合)。 我如何生成它们?
我无法理解24位的"范围"。
有人可以帮我吗?
谢谢。
用哪种编程语言?
顺便说一句,答案很简单:所有数字从0到2 ^ 24-1
@mescalinum我更喜欢PHP和Python
你能解释为什么你需要一个"算法"来完成这项任务吗?
@mescalinum我正在尝试射频(RF),它仅接受十进制值。 软件执行二进制转换。 所以我必须提供24位小数。
因此,这是否可能是stackoverflow.com/questions/10411085/的副本?
这是你想要的吗?
>>> n = 3
>>> result = [bin(k)[2:].rjust(n, '0') for k in xrange(2**n)]
>>> print result
['000', '001', '010', '011', '100', '101', '110', '111']
>>> n = 24
[{:024b}.format(k) for k in range(2**24)]更快
谢谢拉斐尔和@mescalinum。 很棒!
24位只是意味着有24位(零或一)共同创建一个二进制数。
如果要使用所有组合或可以用24位表示的所有数字,则范围是0到16777215。为什么? 以下是格式的表格(二进制=十进制):
000000000000000000000000 = 0
000000000000000000000001 = 1
000000000000000000000010 = 2
000000000000000000000011 = 3
....
....
111111111111111111111110 = 16777214
111111111111111111111111 = 16777215
您真的不需要生成任何东西。 您可以在此处检查二进制到十进制:http://www.binaryhexconverter.com/binary-to-decimal-converter
另一件事:有时在二进制中,省略前导零。 因此,小数点后三位不是000000000000000000000011,而是11。如果长度为24而第一位为1,则其范围仍然为8388608-16777215
谢谢。 但是我必须为软件"生成"。 第一位数字是0,所以整个范围是1-16777215,对吧? 我只需要用零"填充"使其成为24位二进制即可。 对?
如果您需要所有1600万个二进制数的列表,请在python中执行以下操作:
对于范围在(0,2 ** 24)中的dec:print(" {:0> 24}"。format(bin(dec)[2:]))