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された結果になると理解しましょう。