为了账号安全,请及时绑定邮箱和手机立即绑定

十进制数的二进制邻居

十进制数的二进制邻居

阿晨1998 2021-08-11 19:58:10
假设我在0和之间有十进制数2^L。这些十进制数中的每一个都可以表示为 length 的二进制数L。我现在对一个函数感兴趣,该函数采用单个十进制数,然后计算所有L十进制数,其二进制表示仅在一个位置不同。我对这个问题的最快速解决方案感兴趣。例子:L=3--> Numbers between 0 and 7F(2) = (0,3,6)since 2= 010 -> 0=000, 3=011, 6=110希望你有一个想法,并提前致谢:)
查看完整描述

2 回答

?
潇湘沐

TA贡献1816条经验 获得超6个赞

您可以使用位移来做到这一点:


def neighbors(n, bitLength):

    return map(lambda b: n ^ (1 << b), range(bitLength))


>>> print(list(neighbors(2, 3)))

[3, 0, 6]

它们是经典计算机可以完成的最快的数学运算,对于 2 的幂,它们是完美的。


查看完整回答
反对 回复 2021-08-11
  • 2 回答
  • 0 关注
  • 201 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号