第一次使用二进制有问题?

时间:2013-02-17 02:09:36

标签: javascript binary bit-manipulation

为什么这会返回10010而不是00001?

0110 >> 2 // 10010

我认为这些位将向右移动2次,但它们不是。我预期的输出是0001或1,但我得到0。这是为什么?

2 个答案:

答案 0 :(得分:2)

0110是八进制常量,因为它以零开始:

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

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

答案 1 :(得分:1)

您的号码不会被解释为二进制,而是八进制(基数为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。