Python:右移>> 26

时间:2013-01-28 15:30:04

标签: python python-3.x binary

0010 1101 1011 0100 0111 1100 1000 0101

我想右移26,但失败了

print(bin(00101101101101000111110010000101) >> 26)

,调试错误是SyntaxError:invalid token

右移26应返回1011

怎么样?

0010 1101 1011 0100 0111 1100 1000 0101

Shift 0010 1101 1011 0100 0111 1100 1000 0101>> 22返回10110110 并且00001111返回0110转换为十进制6?

<00>用00001111?用00001111怎么做?

4 个答案:

答案 0 :(得分:3)

您使用bin()是错误的。 The documentation states

  

将整数转换为二进制字符串。

由于这不是你所追求的,这是错误的。你试图右移一个字符串,这是不可能的。

你的意思是:

print(0b00101101101101000111110010000101 >> 26)

或者,如果您希望将答案作为二进制字符串:

print(bin(0b00101101101101000111110010000101 >> 26))

这里,前缀0b在Python中用于二进制数字文字。

答案 1 :(得分:2)

bin返回一个字符串,它是字符串的二进制表示。

print (0b00101101101101000111110010000101 >> 26)

我认为应该工作。

您看到的语法错误是因为整数文字不能以python3.x中的0开头 - 在python2.x中,这意味着您要声明八进制文字。

e.g。 (python2.x):

>>> print 025
21

答案 2 :(得分:1)

  • 使用0b作为二进制数的前缀,以向Python表明它是二进制数。
  • 首先右移,然后将其转换为二进制。

试试这个:

print(bin(0b00101101101101000111110010000101 >> 26))

编辑:输出:

0b1011

答案 3 :(得分:0)

阅读Python bin()的文档,看起来你应该传递bin()一个十进制整数,所以它将00101101101101000111110010000101解释为十进制。