在下面的代码中,我理解&应该给出一个结果二进制字符串,其中每个字符串上的每个对应数字都是1,但我得到的结果是:“98435”,我的预期是:“101011”。我的误会在哪里?我怎样才能实现我的目标?
const bool = "101011";
const bool2 = "111011";
const and = bool & bool2;
console.log("bool: "+bool+", bool2: "+bool2+", &: "+and);
答案 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)