Javascript Can';我不明白这种情况
我不理解条件Javascript Can';我不明白这种情况,javascript,bitwise-operators,Javascript,Bitwise Operators,我不理解条件((wins[I]&score)==wins[I])score是一个值,wins[i]是包含整数的数组中的一个元素。他们被比作是布尔人。请开导我 wins = [7, 56, 448, 73, 146, 292, 273, 84]; win = function (score) { //score is an int value for (var i = 0; i < wins.length; i += 1) { if ((wins[i] &
((wins[I]&score)==wins[I])
score
是一个值,wins[i]
是包含整数的数组中的一个元素。他们被比作是布尔人。请开导我
wins = [7, 56, 448, 73, 146, 292, 273, 84];
win = function (score) { //score is an int value
for (var i = 0; i < wins.length; i += 1) {
if ((wins[i] & score) === wins[i]) {
return true;
}
}
return false;
}
wins=[7,56,448,73,146,292,273,84];
win=函数(分数){//分数是一个整数值
对于(变量i=0;i
我问过很多人,他们都在谈论位运算符。有人能尽可能简单地解释一下情况吗?我理解“普通”逻辑运算符。人们谈论按位运算符是正确的:
在这种情况下,如果
win[i]
在score
也没有二进制1的位置不包含二进制1,则整个条件为true。(换句话说,按位蕴涵win[i]
=>score
)谈论按位运算符的人是对的:
在这种情况下,如果
win[i]
在score
也没有二进制1的位置不包含二进制1,则整个条件为true。(换句话说,按位蕴涵win[i]
=>score
)这些不是逻辑运算符,它们是根本不同的。你需要理解数字的二进制表示法。因此,例如,如果a=7
和b=12
,则通过查看a
和b
中均为1的位来计算a和b
:
a 00000111
b 00001100
a&b 00000100
所以
7&12=4
。类似地,|
是按位运算符,而不是逻辑or。这些不是逻辑运算符,它们根本不同。你需要理解数字的二进制表示法。因此,例如,如果a=7
和b=12
,则通过查看a
和b
中均为1的位来计算a和b
:
a 00000111
b 00001100
a&b 00000100
所以
7&12=4
。类似地,|
是按位的,而不是逻辑的or。这里我们不能完全回答,因为我们没有上下文
您必须理解,它是关于整数的二进制表示,它被用作位存储
您可以使用
[7, 56, 448, 73, 146, 292, 273, 84].map(function(v) { var s=v.toString(2);return '00000000'.slice(s.length)+s })
返回
["00000111", "00111000", "111000000", "01001001", "10010010", "100100100", "100010001", "01010100"]
win
函数在传递一个二进制表示为1的score
时返回true
,该二进制表示为wins[i]
值为1
。因此,您的分数必须至少填入这些位
例如,二进制值为10000111
(135)的分数是可以的,因为10000111&00000111
是00000111
,,我们不能在这里完全回答,因为我们没有上下文
您必须理解,它是关于整数的二进制表示,它被用作位存储
您可以使用
[7, 56, 448, 73, 146, 292, 273, 84].map(function(v) { var s=v.toString(2);return '00000000'.slice(s.length)+s })
返回
["00000111", "00111000", "111000000", "01001001", "10010010", "100100100", "100010001", "01010100"]
win
函数在传递一个二进制表示为1的score
时返回true
,该二进制表示为wins[i]
值为1
。因此,您的分数必须至少填入这些位
例如,二进制值为10000111
(135)的分数是可以的,因为10000111&00000111
是00000111
,“我理解“正常”逻辑运算符。”-另外,请注意JavaScript的逻辑运算符|
和&
可以用于非布尔操作数(在这种情况下,他们甚至不返回布尔值)。@nnnnnn这里不是关于逻辑运算符的。@dystroy-这就是为什么我说“作为旁白”并明确地输入了我的意思。OP说“就像它们是布尔值一样进行比较”,这让我怀疑他或她是否真的不知道逻辑运算符是如何工作的。”我理解“普通”逻辑运算符。-作为旁白,请注意JavaScript的逻辑运算符|
和&&
可用于非布尔操作数(在这种情况下,它们甚至不返回布尔值)。@nnnnnn这里与逻辑运算符无关。@dystroy-这就是我说“旁白”的原因并明确地输入了我的意思。OP说“比较起来就像他们是布尔人一样”,这让我怀疑他或她是否真的不知道逻辑运算符是如何工作的。例如,如果win[I]=101010,score=010101,那么条件是真的?那么真正的条件===to win[I]又是如何工作的.===是一个简单的比较逻辑运算符。不,这是一个反例,因为分数包含零,其中win[i]包含一!这里的==
运算符并不特殊,它实际上只是检查两个整数的相等性;)因此,例如,如果win[i]=101010,分数=010101,则条件为真?另外,真实条件===如何赢得[i]。===是一个简单的比较逻辑运算符。不,这是一个反例,因为score包含零,而win[i]包含一!==
运算符在这里并不特殊,它实际上只是检查两个整数的相等;)