2017-07-03 27 views
0

在下面的代码是我的理解是&应该给予与那些所产生的二进制字符串,其中每个字符串中的每个对应的数字都为1的,但是结果我得到的是:“98435”,我的预期是:“101011”。我的误解在哪里?我怎样才能实现我想要做的事情?为什么JavaScript的按位与二进制数增加二进制字符串的长度

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

101001和111011 (基地10),非常正确,98435座10 - 看看这些数字的二进制明白为什么...... –

+2

'(parseInt函数( “101011”,2)parseInt函数( “111011”,2))的toString(。 2)'是你认为* *你的代码是干什么 - JavaScript不工作的方式 –

+0

(43&59)的ToString(2) - 我认为你需要做这样的 – Kirill

回答

2

JavaScript中,最喜欢的语言,假定人类使用基地10码

代码使用STRINGS虽然

当您使用任何数学运算符(除+)的JavaScript尝试是好的,和做一个数出字符串的 - 但是,这是一个十进制数(除非字符串中的第一个数字是0及的数字是八进制的休息(0-7),在这种情况下,这个数字被认为是一个基座8)

因此字符串101011被 “强制” 是编号101011 = 11000101010010011和111011变为111011 = 11011000110100011

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

然而,很容易解决:

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

相关问题