-2

私は2進数を持っています:1010

最初に 0000000001010 (サイズ 13 ) に追加してから、「1」が発生する位置を計算する必要があります

毎回異なる2進数を取得するので、次回は100000000になる可能性があります。つまり、「0000」を追加して、どのビットに1が含まれているかを計算するだけです。

Pythonで追加する方法がわかりません。

私はビット0が何かをするという基本的な慣習を持っています.ビット12は「xyz」を行い、それはリトルインディアン形式であるため、アクティブなビットの処理を開始する前に、取得した2進数の長さを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 ごとに異なる関数を実行すると仮定すると、次のようにすることができます。

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 に答える
0

単純なケース。

開始番号が常に「1」で始まり、常に 13 桁のバイナリ表現で文字列を作成すると仮定すると、結果は常に

 13 - len(initialNumber)

例えば;

 = 13 - len("1010") 

 = 13 - 4

 = 9 

 Result:  0000000001010
          ^^^^^^^^^X^^^
 Indices: 0123456789...
于 2013-04-24T01:01:20.227 に答える