为什么javascript按位&二进制数字增加二进制字符串

时间:2017-07-03 06:08:58

标签: javascript binary bitwise-operators

在下面的代码中,我理解&应该给出一个结果二进制字符串,其中每个字符串上的每个对应数字都是1,但我得到的结果是:“98435”,我的预期是:“101011”。我的误会在哪里?我怎样才能实现我的目标?

const bool = "101011";
const bool2 = "111011";
const and = bool & bool2;
console.log("bool: "+bool+", bool2: "+bool2+", &: "+and);

1 个答案:

答案 0 :(得分:2)

Javascript与大多数语言一样,假设人类在代码中使用基数10

您的代码使用STRINGS

当你使用任何数学运算符时(+除外)Javascript尝试很好,并从字符串中生成一个数字 - 但是,它是一个BASE 10数字(除非字符串中的第一个数字是{ {1}}和其余数字是八进制(0到7),在这种情况下,数字被认为是BASE 8)

因此字符串101011被“强制”为数字101011 = 0而111011变为111011 = 11000101010010011

11011000110100011

但是,很容易修复:

11000101010010011 (binary) &  
11011000110100011 (binary)  
-----------------
11000000010000011 (binary) = 98435 (decimal)