我知道&&
和||
分别用于比较AND
和OR
。
但是&
and|
运算符呢?它们是用来做什么的?
这是我正在测试的代码:
var a = 2;
var b = 3;
var c = a & b;//2
var d = a | b;//3
&& , || 之间的区别 和 &, | ……
我知道&&
和||
分别用于比较AND
和OR
。
但是&
and|
运算符呢?它们是用来做什么的?
这是我正在测试的代码:
var a = 2;
var b = 3;
var c = a & b;//2
var d = a | b;//3
&& , || 之间的区别 和 &, | ……
它们是对数字的位进行操作的位运算符。您必须考虑数字的位数才能使结果有意义:
a = 2 //0010
b = 3 //0011
a & b; //0010 & 0011 === 0010 === 2
https://developer.mozilla.org/en/JavaScript/Reference/Operators/Bitwise_Operators
它们主要用于读取和操作二进制数据,例如 .mp3 文件。
JavaScript 具有与 Java 相同的按位运算符集:
& and
| or
^ xor
~ not
>> signed right shift
>>> unsigned right shift
<< left shift
在 Java 中,按位运算符处理整数。JavaScript 没有整数。它只有双精度浮点数。因此,按位运算符将其数字操作数转换为整数,执行其业务,然后将它们转换回来。
例如:
a = 2 //0010
b = 3 //0011
a & b; //0010 & 0011 === 0010 === 2
a | b; //0010 | 0011 === 0011 === 3
在大多数语言中,这些运算符非常接近硬件并且速度非常快。在 JavaScript 中,它们离硬件很远,而且速度很慢。JavaScript 很少用于位操作。因此,在 JavaScript 程序中,更有可能&
是输入错误的&&
运算符。位运算符的存在减少了语言的一些冗余,使错误更容易隐藏
Javascript: The Good Parts by Douglas Crockford + Esailija 答案
它们分别是按位与和或。该用法主要用于低级(现在不要为什么要在这里,可能有很多应用程序)操作。
例如:
Decimal Number Binary Form
20 10100
30 11110
20 ==> 10100
& 30 ==> 11110
----- ----------
20 10100 (when both bits are 1)
20 ==> 10100
| 30 ==> 11110
----- ----------
30 11110 (when either of the bits is 1)
同样,还有其他运算符:
operator meaning example
xor (^) only one bit is 1 1101
^1001
------
0100
我可以提供整个清单,但那是没有用的。已经有很多答案包含指向优秀资源的链接。你可能想看看那些。我的回答只是给出了一些想法。
&& 和 || 是逻辑运算符,而 & 和 | 是位运算符
位运算符-位运算符将其操作数视为 32 位(零和一)的序列,而不是十进制、十六进制或八进制数。例如,十进制数字 9 的二进制表示为 1001。按位运算符在这种二进制表示上执行操作,但它们返回标准的 JavaScript 数值。
假设变量“a”为 13(二进制 1101)和“b”为 9(二进制 1001)
位与运算符 (&) (JavaScript) - 这是位与运算符,它为每个位位置返回 1,其中两个操作数的对应位均为 1。以下代码将返回 9 (1001):
代码:
result = a & b;
按位或运算符 (|) (JavaScript) - 这是按位或运算符,对于其操作数的一个或两个相应位为 1 的每个位位置返回一个。此示例将返回 13 (1101):
代码:
result = a | b;
阅读更多