我看到了if条件,如if(c&10),而此条件类似于if(c == 10)。这是用JavaScript编写代码的正确方法吗?
答案 0 :(得分:3)
这是正确的(例如,这不是语法错误),但是&
和==
是不同的运算符。
&
是bitwise AND运算符。 ==
是abstract (loose) equality运算符。
当c & 10
为c == 10
时if
和c
恰好在10
中工作的原因是由于c & 10
返回真实值(实际上为10
); c == 10
返回true
(根据定义,这是事实)。
但是,与c & 10
不同,c == 10
也可以用于大量其他整数。
答案 1 :(得分:0)
c & 10
将产生一个数字。
c == 10
将产生一个二进制值。
var c = 10;
console.log("c & 10 = ",c & 10); // 10
console.log("c & 7 = ",c & 7); // 2
console.log("3 & c = ",3 & c); // 2
console.log("10 & 10 = ", 10 & 10); // 10
console.log("c==10 = ", c==10); // true
答案 2 :(得分:0)
按位AND 运算符使用两个整数的二进制表示形式,并逐位比较二进制数字(0或1),并且将生成一个新的整数,且仅当且仅将响应位设置为1如果前两个数字中的对应位都为1,则该位将为0。
比较10和20
10是二进制00001010 = 8 + 2 = 2 ** 3 + 2 ** 1
20是二进制00010100 = 16 + 4 = 2 ** 4 + 2 ** 2
00001010
& 00010100
--------
00000000
因为在无位置上有两个1
比较10和200
10是二进制00001010 = 8 + 2 = 2 ** 3 + 2 ** 1
20是二进制11001000 = 128 + 64 + 8 = 2 ** 7 + 2 ** 6 + 2 ** 3
00001010
& 11001000
--------
00001000
^Here are two 1s
因为在位置3处有两个1。所以200和10是8