十进制到二进制(二进制)
在任何语言中很容易将十进制转换为二进制,反之亦然,但是我需要一个更加复杂的函数。十进制到二进制(二进制)
给定一个十进制数和一个二进制位,我需要知道二进制位是On还是Off(True或False)。
例子:
IsBitTrue(30,1) // output is False since 30 = 11110 IsBitTrue(30,2) // output is True IsBitTrue(30,3) // output is True
的功能将被称为次每秒很多,所以快速算法是必要的..你的帮助是非常赞赏:d
或bitnumber-1取决于你如何计算他们 – 2009-07-30 00:25:01
我认为你的意思是1而不是2,或**而不是` 2009-07-30 00:26:56
是的,我意识到就像我打进了,但它不会让我编辑它几分钟 – 2009-07-30 00:29:32
真的吗?
def IsBitTrue(num, bit):
return (num & (1 << (bit-1))) > 0
通常情况下,这将是1 < <位,但因为你想索引LSB为1 ...
用你的“易”功能,以十进制数转换为二进制,然后与表示正在测试的位的位掩码进行比较。
的Python
def isBitTrue(number, position):
mask = 1 << (position-1)
return bool(number & mask)
如果数量从(而不是1)0的位置,可以节省大量的时间。
>>> isBitTrue(30,1)
False
>>> isBitTrue(30,2)
True
>>> isBitTrue(30,3)
True
bool IsBitTrue(int num , int pos)
{
return ((num>>pos-1)%2==1)
}
“有点复杂” ......双关语意? – seth 2009-07-30 00:21:35