2017-07-03 26 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);

相關問題