我目前正在学习javascript ...存在一个特殊的挑战,我无法弄清楚为什么输出是原样的..所以这是代码:
function addBinary(a,b) {
var sum = a + b;
var res= "";
while(sum > 0) {
res = sum % 2 + res;
sum = Math.floor(sum/2);
}
return res;
}
alert(addBinary(1,2));
//输出为11
在这个addBinary函数中,我不明白的是为什么res = sum % 2 + res;
在第一次迭代后=== 1时是一个空字符串。
我了解模运算符和3%2 = 1背后的逻辑;
但是我没有得到的是+ res
表达式中的res = sum % 2 + res;
。
任何解释将不胜感激。
答案 0 :(得分:0)
它需要从余数运算符和先前收集的值中提取0
或1
并将其分配给res
。
1 10 -> 110
res = sum % 2 + res;
答案 1 :(得分:0)
但是我没有得到的是res中的+ res =总和%2 + res;表达。
好的,因此在第一次迭代之后,第一个变量就存储在res
中:
res = 1 + "" /*res*/
由于res
以前是一个空字符串,因此+
将两个字符串都串联在一起,因此res
现在包含"1"
。现在循环继续进行,因为仍需要1,因此在下一次迭代中,sum % 2
再次为1
,其行为:
res = 1 + "1" /*res*/
所以我们最终得到结果"11"