按位javascript并产生奇怪的结果

时间:2015-02-25 16:04:21

标签: javascript binary bitwise-operators bitwise-and

在我的一个应用程序中,为了简化逻辑/重db的东西,我创建了一个依赖于javascript bitwise'&'的机制运营商。然而,在某些情况下,这似乎很奇怪。

1 & 0 => 0;  11 & 00 => 0;  111 & 000 => 0; 111 & 100 => 100

到目前为止一切都很好..但是当我尝试这样做时:

1100 & 0011 => 8 ;
1100 & 1111 => 1092

我得到了奇怪的结果,而不是0或1100.我发现这是由于某些'特定基础'中的'javascript解释',但我不知道是否有解决方案。

3 个答案:

答案 0 :(得分:2)

根据您的问题,您在十进制数字之间执行按位运算,而不是二进制数字。在javascript中,二进制数由prefixing 0b表示,例如2 should be represented as 0b10。 另一件事是javascript返回十进制数作为按位运算的结果。同样,hexadecimal number使用prefex 0x表示。

答案 1 :(得分:1)

当您输入1100时,您不会生成12的二进制表示形式,您正在编写1100。当数字以0为前缀时,Javascript会将该数字解释为八进制数。

简而言之,请确保给出正确的十进制数以获得正确的二进制表示。

答案 2 :(得分:1)

Javascript并不奇怪。 您正在键入十进制数字,转换为:

decimal 1100 = binary 0000010001001100
decimal 0011 = binary 0000000000001011

如果你&他们将获得

0000000000001000

是8

同样是1100& 1111