Python : 右移 >> 26

2 投票
4 回答
663 浏览
提问于 2025-04-17 13:57
0010 1101 1011 0100 0111 1100 1000 0101

我想对26进行右移操作,但失败了。

print(bin(00101101101101000111110010000101) >> 26)

调试时出现的错误是语法错误:无效的标记。

对26进行右移应该返回1011。

那这个怎么处理呢?

0010 1101 1011 0100 0111 1100 1000 0101

把0010 1101 1011 0100 0111 1100 1000 0101右移22位,结果是10110110。

而把00001111右移后得到0110,转换成十进制是6?

关于00001111,怎么对它进行操作呢?

4 个回答

1
  • 在你的二进制数字前面加上 0b,这样Python就知道这是一个二进制数字。
  • 先进行右移操作,然后再把它转换成二进制。

试试这个:

print(bin(0b00101101101101000111110010000101 >> 26))

编辑:输出结果:

0b1011
2

bin 函数会返回一个字符串,这个字符串是数字的二进制表示。

print (0b00101101101101000111110010000101 >> 26)

我觉得这样应该没问题。

你看到的语法错误是因为在 Python 3.x 中,整数的字面量不能以 0 开头——在 Python 2.x 中,这样做是表示你想声明一个八进制数。

例如(在 Python 2.x 中):

>>> print 025
21
3

你使用的 bin() 方法是错误的。文档上说

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

因为这不是你想要的,所以是错误的。你试图对一个字符串进行右移操作,这是不可能的。

你应该这样做:

print(0b00101101101101000111110010000101 >> 26)

或者,如果你想要以二进制字符串的形式得到答案:

print(bin(0b00101101101101000111110010000101 >> 26))

在这里,前缀 0b 是用来表示二进制数字的。

撰写回答