繁体   English   中英

十进制到位(二进制)

[英]Decimal to Bit (Binary)

将任何语言的Decimal转换为Binary都很容易,反之亦然,但是我需要一个更复杂的函数。

给定一个十进制数和一个二进制位,我需要知道二进制位是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

打印此页,挂在显示器上方

http://graphics.stanford.edu/~seander/bithacks.html

但这大概是

if(值&(1 << bit_number))

真?

def IsBitTrue(num, bit):
    return (num & (1 << (bit-1))) > 0

通常,它是1 << bit,但是由于您要将LSB索引为1 ...

使用“简单”功能将十进制数转换为二进制,然后与代表要测试的位的位掩码进行比较。

蟒蛇

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
bool IsBitTrue(int num , int pos)
{
 return ((num>>pos-1)%2==1)
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM