-2

我有一个二进制数:1010

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

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

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

我有一个基本约定,即位 0 执行某些操作……位 12 执行“xyz”并且它采用小印度格式,因此在开始处理哪个位处于活动状态之前,我需要使我得到的任何二进制数的长度等于 12(即有 1)

请帮助..它只能在python中完成,因为其余的代码都在python中......

编程新手。谢谢。

4

3 回答 3

4

您可以使用以下字符串格式实现填充

yourBinNumber = 1010
paddedString = "%013d" % yourBinNumber

然后找出1的位置如下

paddedString.index("1")

有关 Python 字符串格式的更多信息,请参见此处

于 2013-04-24T00:57:23.047 回答
0

天真的案例;

假设您的起始数字始终以“1”开头,并且您始终创建一个具有 13 位二进制表示的字符串,那么结果始终是

 13 - len(initialNumber)

例如;

 = 13 - len("1010") 

 = 13 - 4

 = 9 

 Result:  0000000001010
          ^^^^^^^^^X^^^
 Indices: 0123456789...
于 2013-04-24T01:01:20.227 回答
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
于 2013-04-24T01:44:25.837 回答