为什么返回 10010 而不是 00001?
0110 >> 2 // 10010
我认为这些位会向右移动 2 次,但事实并非如此。我期望的输出是0001
or 1 但我得到了 0 。为什么是这样?
为什么返回 10010 而不是 00001?
0110 >> 2 // 10010
我认为这些位会向右移动 2 次,但事实并非如此。我期望的输出是0001
or 1 但我得到了 0 。为什么是这样?
0110 是一个八进制常数,因为它以零开头:
>>> 0110
72
>>> 0110 >> 2
18
>>> bin(_)
'0b10010'
这是 Python,但许多其他具有八进制常量的语言(Java、C、JavaScript ......)也是如此。并非所有语言都提供二进制常量。如果您没有它们,您可以使用十六进制常量(例如,0b0110 是 0x6)。
您的数字不会被解释为二进制,而是八进制(以 8 为底)。八进制0110
是72
十进制或1001000
二进制。当您右移 2 时,就变成10010
了您所看到的。
在编程语言中,前导零表示八进制是很常见的。根据您使用的语言,可能有也可能没有指定二进制文字的方法。
表达二进制数的更通用方法是使用十六进制,因为每个半字节(十六进制数字)正好是 4 位。
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
A 1010
B 1011
C 1100
D 1101
E 1110
F 1111
因此,要制作 0110(二进制),我们将使用 0x6。要制作 01101101,我们将使用 0x6D。