为什么返回10010而不是00001?

0110 >> 2 // 10010


我认为这些位会向右移动2次,但事实并非如此。我期望的输出是0001或1,但我却得到了0。为什么是这样?

最佳答案

0110是一个八进制常量,因为它以零开头:

>>> 0110
72
>>> 0110 >> 2
18
>>> bin(_)
'0b10010'


这是Python,但许多其他具有八进制常量的语言(Java,C,JavaScript等)也是如此。并非所有语言都提供二进制常量。如果没有它们,则可以改用十六进制常量(例如0b0110为0x6)。

10-06 10:57