我正在寻找以下问题的最快解决方案:我的函数采用一个十进制数dec
,然后将其转换bin
为length的二进制数l
。然后,我更改i
二进制数的第n个索引处的值,并将结果转换回十进制数。目前,我通过以下方式实现此目的:
def new_dec_function(dec, i, l):
bin = list(map(int, numpy.binary_repr(dec, width=l)))
bin[i] = 1 - bin[i]
new_dec = 0
for bit in bin:
new_dec = (new_dec << 1) | bit
return new_dec
你知道这是否可以改善?
您所说的“十进制”数字已经以二进制表示形式存储在计算机中,因此您要做的就是翻转数字的第i位。使用二进制xor运算符可以轻松完成此操作^
def new_dec_function(dec, i):
return dec ^ (1 << i)
>>> new_dec_function(5, 1)
7
>>> new_dec_function(5, 0)
4
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句