在我的一个应用程序中,为了简化逻辑/重db的东西,我创建了一个依赖于javascript bitwise'&'的机制运营商。然而,在某些情况下,这似乎很奇怪。
1 & 0 => 0; 11 & 00 => 0; 111 & 000 => 0; 111 & 100 => 100
到目前为止一切都很好..但是当我尝试这样做时:
1100 & 0011 => 8 ;
1100 & 1111 => 1092
我得到了奇怪的结果,而不是0或1100.我发现这是由于某些'特定基础'中的'javascript解释',但我不知道是否有解决方案。
答案 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