首页 > 解决方案 > 如何获得二进制表示为 1 的数字?

问题描述

我正在尝试在 python 中实现一些快速的二进制求幂。我想知道数字的二进制表示返回1的整数。也许一个例子会更清楚:

bin(13) # returns 1101 because one 8 + one 4 + one 1 = 13. 

如何构建一个返回 8,4,1 的函数,将二进制数作为参数传递?正如你所看到的,我并没有明确地试图获得 2 的幂,而是将幂相乘的极简表示。

标签: pythonpython-3.xbinary

解决方案


这个问题有点令人困惑(见我的评论),但我还是想分享一个解决方案,因为目前接受的答案对我来说似乎令人困惑。出于好奇,我明天可能会比较和基准测试一堆不同的解决方案。

bin_num = bin(13)

def bin_str_decomp(bin_num_str):
    bin_clean = bin_num_str[:1:-1]
    return [1 << idx for idx, bit in enumerate(bin_clean) if bit == '1']

print(bin_str_decomp(bin_num))

推荐阅读