2
0010 1101 1011 0100 0111 1100 1000 0101

26 を右シフトしたいのですが失敗しました

print(bin(00101101101101000111110010000101) >> 26)

デバッグ エラーは SyntaxError: 無効なトークンです

右シフト 26 は 1011 を返す必要があります

これはどう?

0010 1101 1011 0100 0111 1100 1000 0101

Shift 0010 1101 1011 0100 0111 1100 1000 0101>>22 は 10110110 を返します。

00001111 で?00001111 でこれを行うには?

4

4 に答える 4

3

の使い方bin()が間違っています。ドキュメントには次のように記載されています

整数をバイナリ文字列に変換します。

それはあなたが求めているものではないので、それは間違っています。文字列を右シフトしようとしていますが、これは不可能です。

もしかして:

print(0b00101101101101000111110010000101 >> 26)

または、バイナリ文字列として答えが必要な場合:

print(bin(0b00101101101101000111110010000101 >> 26))

ここで、プレフィックス0bは Python で 2 進数リテラルに使用されます。

于 2013-01-28T15:33:53.697 に答える
2

bin文字列のバイナリ表現である文字列を返します。

print (0b00101101101101000111110010000101 >> 26)

動作するはずです。

表示されている構文エラーは、python3.x で整数リテラルを開始できないためです0。python2.x では、8 進リテラルを宣言する必要がありました。

例 (python2.x):

>>> print 025
21
于 2013-01-28T15:32:15.323 に答える
1
  • 0b2 進数であることを Python に示すために、2 進数の前に を付けます。
  • 最初に右にシフトしてから、バイナリに変換します。

これを試して:

print(bin(0b00101101101101000111110010000101 >> 26))

編集:出力:

0b1011
于 2013-01-28T15:34:43.383 に答える
0

Python bin()のドキュメントを読むと、bin() に 10 進数の整数を渡す必要があるように見えるため、00101101101101000111110010000101 を 10 進数として解釈しています。

于 2013-01-28T15:34:57.953 に答える