Python : 右移 >> 26
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
是用来表示二进制数字的。