检查二进制数中出现1的位置

时间:2013-04-24 00:48:52

标签: python binary append

我有二进制数:1010

我需要先将它附加到0000000001010(大小13) 然后计算出现在哪个位置“1”

每次我得到不同的二进制数,所以下次它可能是100000000,这意味着我只需要追加“0000”,然后计算哪个位有1。

我无法弄清楚如何在python中追加。

我有一个基本的约定,第0位做某事...第12位做“xyz”,它的是小印度格式因此我需要在我开始处理哪一位之前使任何二进制数的长度等于12是活跃的(即有1)

请帮助..它必须只在python中完成,因为其余的代码是在python ...

编程新手。感谢。

3 个答案:

答案 0 :(得分:3)

您可以使用以下字符串格式

来实现填充
yourBinNumber = 1010
paddedString = "%013d" % yourBinNumber

然后找出1的位置如下

paddedString.index("1")

有关Python字符串格式的更多信息,请访问here

答案 1 :(得分:0)

天真的案例;

假设您的起始编号始终以“1”开头,并且您始终创建一个包含13位二进制表示的字符串,则结果始终为

 13 - len(initialNumber)

e.g;

 = 13 - len("1010") 

 = 13 - 4

 = 9 

 Result:  0000000001010
          ^^^^^^^^^X^^^
 Indices: 0123456789...

答案 2 :(得分:0)

假设你想在二进制字符串中为每个1运行一个不同的函数,你可以这样做:

def fun0():
    print('fun0');

def fun1():
    print('fun1');

... 

def fun12():
    print('fun12');

funs = [fun0, fun1, ... , fun12]

# ass x is binary string
x = '1010'

# convert to integer
xi = int(x,2)
for i in range(0,13):
    if(xi & (1 << i) != 0):
        funs[i]()

输出:

  
    
fun1
fun3