在任何语言中将十进制转换为二进制都很容易,反之亦然,但我需要一个更复杂的函数。
给定一个十进制数和一个二进制位,我需要知道二进制位是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
答案 0 :(得分:6)
打印此页面,悬挂在显示器上方
http://graphics.stanford.edu/~seander/bithacks.html
但它大致类似于
if(value&(1<<< bit_number))
答案 1 :(得分:4)
真的?
def IsBitTrue(num, bit):
return (num & (1 << (bit-1))) > 0
通常,它将是1&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&bit;
答案 2 :(得分:0)
使用'easy'函数将十进制数转换为二进制数,然后与代表您正在测试的位的位掩码进行比较。
答案 3 :(得分:0)
的Python
def isBitTrue( number, position ):
mask = 1 << (position-1)
return bool( number & mask )
如果您将位置从0(而不是1)编号,则可以节省大量时间。
>>> isBitTrue(30,1)
False
>>> isBitTrue(30,2)
True
>>> isBitTrue(30,3)
True
答案 4 :(得分:0)
bool IsBitTrue(int num , int pos)
{
return ((num>>pos-1)%2==1)
}