[Javascript] ビット演算子

2進数計算式サンプル

基礎知識

0b***という風に書くことで、javascriptは、2進数の型になります。 10進数を2進数に変換するには、.toString(2)を使います。 (10).toString(2) > '1010' 桁数を多くしてゼロパディングしたい場合は、padStartまたは、sliceを使います。 (10).toString(2).padStart(10, '0') > '0000001010' ("0000000000" + (10).toString(2)) . slice(-10) > '0000001010'

足し算 : 1+1=2

普通に四則演算できます。 (0b001 + 0b001).toString(2) > '10'

引き算 : 1-1=0

(0b001 - 0b001).toString(2) > '0'

掛け算 : 3*3=9

(0b011 * 0b011).toString(2) > '1001'

割り算 : 12/4=3

(0b1100 / 0b100).toString(2) > '11'

ビット論理積(AND)

1つの2進数のそれぞれのビットが、共に1の場合のみ1を返します。 '001' & '011' > 1 '101' & '111' > 101 【注意】 ・判定する2進数は、文字列でも数値でも可能 ・結果は数値で返るので、必要であれば、ゼロパディングするべし。

ビット論理和(OR)

2つの2進数のそれぞれのオペランド(桁)の位置のビットが、どちらかが1の場合に1を返します。 '001' | '011' > 11 '101' | '111' > 111

ビット排他的論理和(XOR)

2つの2進数のそれぞれのオペランド(桁)の位置のビットが、どちらか一方が1の場合にのみ1を返します。 '001' ^ '011' > 10 '101' ^ '111' > 10

ビット論理否定(NOT)

2進数の0と1のビットを逆転させます。 ~0b1010 > -11 ~-11 > 10 【注意】 上の2つのサンプルは共に相互になるように書いています。(進数が違う点がミソ) 1010 は +10で結果は、10進数での-11が返っています。 整数値に対して、*1-1された結果になると理解しましょう。