0

在我的一个应用程序中,为了简化逻辑/繁重的数据库内容,我创建了一种依赖于 javascript 按位“&”运算符的机制。然而,这在某些情况下似乎表现得很奇怪。

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

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

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

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

4

3 回答 3

2

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

于 2015-03-25T15:57:06.413 回答
1

当您键入时,1100您不会产生 12 的二进制表示,而是在编写1100. 当数字以 0 为前缀时,Javascript 将该数字解释为八进制数。

简而言之,确保您提供正确的十进制数字以获得正确的二进制表示。

于 2015-02-25T16:08:39.687 回答
1

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

decimal 1100 = binary 0000010001001100
decimal 0011 = binary 0000000000001011

如果你是&他们,你会得到

0000000000001000

这是8

1100 和 1111 也是如此

于 2015-02-25T16:12:20.473 回答