2
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

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

使用 00001111?如何使用 00001111 执行此操作?

4

4 回答 4

3

你的使用bin()是错误的。该文件指出

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

既然那不是你所追求的,那是错误的。您正在尝试右移一个字符串,这是不可能的。

你的意思是:

print(0b00101101101101000111110010000101 >> 26)

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

print(bin(0b00101101101101000111110010000101 >> 26))

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

于 2013-01-28T15:33:53.697 回答
2

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

print (0b00101101101101000111110010000101 >> 26)

我认为应该工作。

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

例如(python2.x):

>>> print 025
21
于 2013-01-28T15:32:15.323 回答
1
  • 给你的二进制数加上前缀,0b以向 Python 表明它是一个二进制数。
  • 首先右移,然后将其转换为二进制。

试试这个:

print(bin(0b00101101101101000111110010000101 >> 26))

编辑:输出:

0b1011
于 2013-01-28T15:34:43.383 回答
0

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

于 2013-01-28T15:34:57.953 回答