python - 如何获得二进制表示为 1 的数字?
问题描述
我正在尝试在 python 中实现一些快速的二进制求幂。我想知道数字的二进制表示返回1的整数。也许一个例子会更清楚:
bin(13) # returns 1101 because one 8 + one 4 + one 1 = 13.
如何构建一个返回 8,4,1 的函数,将二进制数作为参数传递?正如你所看到的,我并没有明确地试图获得 2 的幂,而是将幂相乘的极简表示。
解决方案
这个问题有点令人困惑(见我的评论),但我还是想分享一个解决方案,因为目前接受的答案对我来说似乎令人困惑。出于好奇,我明天可能会比较和基准测试一堆不同的解决方案。
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))
推荐阅读
- javascript - 是否可以将 PHP 查询变量传递给 JS 而不在 View Source 中显示它?
- bash - 在 Bash 中将 Matlab (Linux) 作为 Cron 作业运行的输出在电子邮件中包含许多“>>”
- assembly - 减去两个字符
- javascript - 如何防止表格数据元素合并到一列中?
- amazon-web-services - IntelliJ:为 gradle 运行配置设置 AWS 环境变量
- rust - 将宏参数传递给其他宏
- excel - VBA 在下一个可用行中插入数据,该行不是工作表底部的总行
- python-3.x - 从 Scrapy 获取统计信息的 Python Telegram 机器人
- video - 负数或 0 秒持续时间
- javascript - Javascript - 您如何通过添加数字使记录唯一?