麻烦搞清楚Javascript&操作者

时间:2018-05-06 21:28:42

标签: javascript

所以我是Javascript的新手,在我的第一个Javascript入门课程中。我刚刚找到了&运算符所做的事情并且遇到了这个定义:

  

&运算符在每个位的位置返回一个,两个操作数的相应位都是1。

我还能够在此网站上找到之前已回答的问题的=====的说明。在此链接:Wikipedia Bitwise_operation#AND

它解释了1 & 11 x 1相同,即简单乘法。所以我的问题是为什么10 & 5 == 010 & 6 == 2

不是10 & 5 == 5010 & 6 == 60吗?

我没理解什么?

4 个答案:

答案 0 :(得分:2)

它只是每个位置(1和0)中的二进制位相乘。

例如,使用10 & 5

10 =二进制1010

5 = 0101二进制

现在将每个数字乘以相同位置的另一个数字:

(1×0)(0×1)(1×0)(0×1)

= 0000

小数

= 0



console.log(10 & 5)




使用10 & 6

10 =二进制1010

6 = 0110二进制

现在将每个数字乘以相同位置的另一个数字:

(1×0)(0×1)(1×1)(0×0)

= 0010

=十进制2



console.log(10 & 6)




答案 1 :(得分:1)

相当于每位乘法

{{1}}

所以你的例子是10& 5是:

{{1}}

答案 2 :(得分:0)

如果从基数10切换到基数2,这在按位比较数字时是必需的,那么它就更清晰了:

  

10& 5成为1010& 0101在基数2中等于0000,在基数10中等于0

     

10& 6变为1010& 0110在基数2中等于0010,在基数10中等于2

希望这有帮助!

答案 3 :(得分:-1)

所以10应该是这样的1010 和5应该是这样的0101

现在,如果您发现&或者对于他们两个,你应该得到类似0000的零

类似于6,它应该是0110

哪个应该给&amp;或者<和,因为0010恰好是2

注意: for和我们有以下规则

0 & 0 === 0
0 & 1 === 0
1 & 1 === 1

尝试浏览w3c文章:https://www.w3schools.com/jsref/jsref_operators.asp