2

我知道&&||分别用于比较ANDOR

但是&and|运算符呢?它们是用来做什么的?

这是我正在测试的代码:

var a = 2;
var b = 3;
var c = a & b;//2
var d = a | b;//3

&& , || 之间的区别 和 &, | ……

4

5 回答 5

4

它们是对数字的位进行操作的位运算符。您必须考虑数字的位数才能使结果有意义:

a = 2 //0010
b = 3 //0011
a & b; //0010 & 0011 === 0010 === 2

https://developer.mozilla.org/en/JavaScript/Reference/Operators/Bitwise_Operators

它们主要用于读取和操作二进制数据,例如 .mp3 文件。

于 2012-06-20T14:51:24.423 回答
3

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 答案

于 2012-06-20T14:51:26.640 回答
3

它们分别是按位与和或。该用法主要用于低级(现在不要为什么要在这里,可能有很多应用程序)操作。

例如:

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

我可以提供整个清单,但那是没有用的。已经有很多答案包含指向优秀资源的链接。你可能想看看那些。我的回答只是给出了一些想法。

于 2012-06-20T15:01:02.170 回答
2

&& 和 || 是逻辑运算符,而 & 和 | 是位运算符

于 2012-06-20T14:52:00.630 回答
1

&& 和 || 是逻辑运算符,而 & 和 | 是位运算符

位运算符-位运算符将其操作数视为 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; 

阅读更多

运营商: & | ^ ~ << >> >>>

于 2012-06-20T14:49:16.597 回答