我在使用下面的代码遇到一个小问题,而不是我得到的数字NaN
。怎么了?
for (var i = 0; i<100; i++) {
x = i ^ i
result = x + result;
}
var y = result - (result ^ result);
console.log(y);
答案 0 :(得分:2)
它是NaN
,因为您没有在开始时初始化result
。
让我们看一下脚本:
var result = 0;
var x;
for (var i = 0; i<100; i++) {
x = i ^ i
result = x + result;
}
这里为每个i
运行按位XOR。由于i
中的所有位都等于它们自己,x
始终为0. result
在开始时为0,每次向其添加0,因此,结束时result
的值为0。
var z = result ^ result;
当你对自己进行异或result
时,result
的所有位都等于它们自己,所以结果将为0。
var y = result - z;
您从0减去0,结果为0。
XOR B = A&lt;&gt;乙
按位级别
XOR B导致每个位的XOR结果。
答案 1 :(得分:1)
更具体地说明你为什么会得到NaN
:正如@LajosArpad所说的那样,你实际上只做了result = 0 + result;
100次。
但是,由于您没有初始化result
,因此它是undefined
。 0 +
上的数学运算(例如undefined
)将始终生成NaN
。