2017-07-03 10 views
0

次のコードでは、&は結果のバイナリ文字列に各文字列の各対応する数字が両方とも1であると仮定していることを理解しています。私は持っている: "98435"、私が期待したもの: "101011"。私の誤解はどこですか?私は何をしようとしているのですか?javascriptが2進数のビット単位で バイナリ文字列の長さを増やす理由

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が、ほとんどの言語のように、人間は、あなたが(+を除く)任意の数学的な演算子を使用する場合

はJavascriptがいいことしようとするものの

あなたのコードは、文字列を使用するコードでベース10を使用すると仮定し、数字を文字列から外します。ただし、文字列の最初の数字が0で、残りの数字が8進数(0〜7)でない場合は、基数10です。この場合、数字はベース8)

だから、文字列101011を= 11000101010010011番号101011であることを "強要" されと111011 =
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);

関連する問題