javascript基礎 基本的な演算子の種類

javascript基礎 基本的な演算子の種類

javascriptの基礎である基本的な演算子の種類を記述してます。

環境

  • OS windows11 home
  • ブラウザ chrome 100.0.4896.60

代入演算子

代入演算子(=)は、主に変数に値を代入する際に使用します。

let msg = "hello world";

console.log( msg ); // hello world

算術演算子

四則演算を行うための演算子となります。

演算子記号
加算+
減算
乗算*
除算/
剰余%
インクリメント++
デクリメント
単項プラス+
単項マイナス
指数演算子**

使用した結果は、以下となります。

console.log( 2 + 3 ); // 加算 5

console.log( 3 - 2 ); // 減算 1

console.log( 3 * 2 ); // 乗算 6

console.log( 3 / 2 ); // 除算 1.5

console.log( 5 % 2 ); // 剰余 1

let num = 1

console.log( ++num ); // インクリメント 2

num = 2

console.log( --num ); // デクリメント 1

console.log( +"10" ); // 単項プラス 文字列に変換 10 ← 文字列

console.log( -(-1) ); // 単項マイナス 1

console.log( 2 ** 3 );// 指数演算子 8

比較演算子

値を比較する時に使用する演算子となります。

演算子記号
等価演算子==
不等価演算子!=
厳密等価演算子===
厳密不等価演算子!==
より大きい>
より大きいか等しい>=
より小さい<
より小さいか等しい<=
論理 AND&&
論理 OR||

使用した結果は、以下となります。

let num = 3;

// 等価演算子
console.log( num == 3 ); // true
console.log( num == 2 ); // false
console.log( num == "3" ); // true
console.log( num == "2" ); // false

// 不等価演算子
console.log( num != 3 ); // false
console.log( num != 2 ); // true
console.log( num != "3" ); // false
console.log( num != "2" ); // true

// 厳密等価演算子
console.log( num === 3 ); // true
console.log( num === 2 ); // false
console.log( num === "3" ); // false
console.log( num === "2" ); // false

// 厳密不等価演算子
console.log( num !== 3 ); // false
console.log( num !== 2 ); // false
console.log( num !== "3" ); // true
console.log( num !== "2" ); // false

// より大きい
console.log( num > 3 ); // false

// 以上
console.log( num >= 3 ); // true

// より小さい
console.log( num < 5 ); // true

// 以下
console.log( num <= 5 ); // true

// 論理 AND
console.log( num <= 5 && num > 2 ); // true
console.log( num <= 5 && num > 4 ); // false

// 論理 OR
console.log( num <= 5 || num > 2 ); // true
console.log( num <= 5 || num > 4 ); // true

比較演算子

2進数の計算時などに使用する演算子となります。

演算子記号
論理演算子(ビットごとの AND)&
論理和(ビットごとの OR)|
論理和(ビットごとの XOR)^
論理否定(ビットごとの NOT)~
左シフト<<
右シフト>>
符号なし右シフト>>>

論理演算子 & (ビットごとの AND)

論論理演算子は、「どちらも1の場合1。それ以外0」です。

xyx & y
111
010

実際に、2進数に使用してみます。数値の前に「0b」をつけると2進数として扱えます。

console.log( (0b1010 & 0b1100).toString(2) ); // 1000
論理和 | (ビットごとの OR)

論理和は、どちらかが「1の場合1」となります。

xyx | y
000
011
console.log( (0b1010 | 0b1100).toString(2) ); // 1110
排他的論理和 ^ (ビットごとの XOR)

排他的論理和は「どちらか異なる場合 1となります」

xyx ^ y
110
101
console.log( ( 0b1010 ^ 0b0011 ).toString(2) ); // 1001
論理否定 ~ (ビットごとの NOT)

論理否定は、「全てのビットを反転させます」

x~x
10
01
console.log( ( ~0b11 ).toString(2) ); // -100

javascriptは、最上位ビットが符号ビットとなり、最上位ビットが1となる場合はマイナスとなります。

シフト演算子

シフト演算子は、以下のように使用することが可能です。

console.log( ( 0b1100 << 2 ).toString(2) ); // 110000
console.log( ( 0b1100 >> 2 ).toString(2) ); // 11

符号なし右シフト演算には、以下のような結果となります

let num = -5 //  11111111111111111111111111111011
console.log( ( num >>> 2 ).toString(2) ); // 111111111111111111111111111110