★演算子

戻る 演算子 進む

ここでは、JavaScriptの演算子をまとめています。ご参考になれば幸いです。

プログラミングはいろいろな値(文字列や数値)を足したり引いたり(計算)して処理をします。この式の表現に用いる記号を演算子と言います。

算術演算子

算術演算子リスト
算術をするための演算子です。
値 演算子 値;
単項演算 変数 演算子;
      演算子 変数;
= 値を代入します。 例 : y = x
+ 加算します。使用例はこちら 例 : z = x + y
- 減算します。負の値も表します。 例 : z = x - y
* 乗算します。 例 : z = x * y
/ 除算します。 例 : z = x / y
% 余剰。除算の余り(割り切れずに残った部分)。
小数点以下切り捨て。使用例はこちら
例 : z = x % y
++ 「単項演算」インクリメント(値を1増やします。)使用例はこちら 例 : y = x++ 代入後に加算
例 : y = ++x 代入前に加算
-- 「単項演算」デクリメント(値から1引きます。) 例 : y = x-- 代入後に減算
例 : y = --x 代入前に減算
[先頭へ]

比較演算子

比較演算子リスト
左右の値を比較するための演算子です。 真の時true偽の時falseを返します。
値 演算子 値;
== 左右の値(式)が等しい。 例 : x == y
!= 左右の値(式)が等しくない。 例 : x != y
< 右の値(式)が大きい。 例 : x < y
<= 右の値(式)が大きいか等しい。 例 : x <= y
> 左の値(式)が大きい。使用例はこちら 例 : x > y
>= 左の値(式)が大きいか等しい。 例 : x >= y
[先頭へ]

論理演算子

理論演算子リスト
左右の値を論理的に比較するための演算子です。 真の時true偽の時falseを返します。
論理値 演算子 論理値;
!の場合は 演算子 論理値; も可
&& かつ(AND) 例 : x && y xかつy xy両方真のときtrue、それ以外はfalse
|| または(OR) 例 : x || y xまたはy xy両方か、片方が真のときtrue
! ではない(NOT) 例 : x ! y xはyではない xy両方偽のときtrue
[先頭へ]

代入演算子

代入演算子リスト
代入の仕方を指定するための演算子です。
変数 演算子 値;
+= 左に右の値を加算して左に代入します。 例 : x += y (x = x + yと同じ)
-= 左に右の値を減算して左に代入します。 例 : x -= y (x = x - yと同じ)
*= 左に右の値を乗算して左に代入します。 例 : x *= y (x = x * yと同じ)
/= 左に右の値を除算して左に代入します。 例 : x /= y (x = x / yと同じ)
%= 左に右の値で除算した余りを左に代入します。 例 : x %= y (x = x % yと同じ)
[先頭へ]

文字列演算子

文字列演算子リスト
文字列同士を連結するための演算子です。
文字列 演算子 文字列;
+ 文字列を連結します。 例 : "文字列1" + "文字列2"
+= 文字列を追加します。 例 : x += "文字列"
[先頭へ]

ビット演算子

まず、ビットについて説明します。CPUがデータを読み書きするとき、バイトを単位に読み書きしますが、この1バイトのメモリは、より細かく見ると8個のセルで構成されています。具体的に図で表現すると次のようになります。

1バイト
セル(ビット)
0 0 0 0 0 0 0 1
ビット列
7 6 5 4 3 2 1 0

この1個のセルのことをビットと言います。ビットは記憶の最小単位で、「0」または「1」で記憶します。(コンピュータ内部では、文字も数値も「0」と「1」のビット単位で処理されています。)この8個のビットは切り離すことはできません。CPUはメモリのデータを8ビット丸ごと(つまり1バイトを単位として)読み書きします。左端のビットは最上位ビット(または第7ビット)、右端のビットは最下位ビット(または第0ビット)と呼ばれています。

しかし、これでは2以上の大きな数値を表すことができません。ではどう表すのか? もうお気付きになられたかと思います。そうです。2進数の考え方となってます。では、10進数から2進数へ変換してみましょう。さて変換方法ですが、ビットそれぞれには「桁の位」があります。ビットには2のn乗の「桁の位」を持たせています。例えば、8ビットの「桁の位」は以下のようになります。

ビット
0
 
0
 
0
 
0
  0   0   0   1
桁の位 128   64   32   16   8   4   2   1

ビットが1ならば「桁の位」を加算、0ならば加算しないというわけです。例えば10進数の15であれば8+4+2+1=15ですから以下のようになります。

ビット
0
 
0
 
0
 
0
  1   1   1   1    
桁の位 128   64   32   16   8   4   2   1    

10進数
0
+
0
+
0
+
0
+ 8 + 4 + 2 + 1 = 15
[先頭へ]
ビットシフト
10進数
ビット
0
0 0 0 0 0 0 0 0
1
0 0 0 0 0 0 0 1
2
0 0 0 0 0 0 1 0
4
0 0 0 0 0 1 0 0
8
0 0 0 0 1 0 0 0
16
0 0 0 1 0 0 0 0
32
0 0 1 0 0 0 0 0
64
0 1 0 0 0 0 0 0
128
1 0 0 0 0 0 0 0

 また、10進数はビットで表すと左表のようになります。
これらの数値の間には次のような関係があります。2は1の2倍、4は2の2倍、・・・、64は32の2倍、128は64の2倍となっています。1の位置に注目して見て下さい。そうです。2倍される毎に1が左へ1つずつビットシフトすることが分かると思います。 逆に、128から始めて、右へビットを1つずつシフトさせると、1/2ずつ小さくなっていることが分かると思います。
 要するに数値を2倍するには、ビットを左へシフトし、1/2にするには右へシフトさせればよいのです。基本的にシフトして空いたところには 0 を入れます。これが符号を考慮しない論理シフトです。では3倍や5倍にするにはどうするのか?そういうときは、シフトと加算を組み合わせて計算します。例えば、10を3倍にするには、2倍 + 1倍と考えて1ビットシフトしたものに10を足して(1倍だからね)下さい
 さて、2進数で負数(マイナス)を表すにはどうするのか?(「0」と「1」しか扱えないからね〜)
それは、2の補数を使います。求め方は、ビットを反転させて1を足します。

検証:
  1 0 0 0 0 0 0 0 0 2の8乗(2進数)   
-   0 0 0 0 1 1 1 1 10進数の15

    1 1 1 1 0 0 0 1 2の補数
0 0 0 0 1 1 1 1     2進数の15
1 1 1 1 0 0 0 0       ビット反転1⇔0
1 1 1 1 0 0 0 0 + 1   1を足す
1 1 1 1 0 0 0 1       2の補数と同じ!

この補数表現の2進数の場合、先頭の1ビットを符号ビットとし、先頭の符号ビットは動かさずに左シフトのときは空いたところに 0 を、右シフトのときは空いたところに符号ビット(1)を入れます。このように符号を考慮するのが算術シフトです。

名称 論理積 論理和 排他的論理和
10進数 ビット 10進数 ビット 10進数 ビット
  11 1011 11 1011 11 1011
  6 0110 6 0110 6 0110
演算結果 2 0010 15 1111 13 1101
論理積
2つのビットが1の時1。それ以外は0。
論理和
2つのビットが0の時0。それ以外は1。
排他的論理和
2つのビットが異なる時1。同じ時は0。

[先頭へ]
ビット演算子リスト
ビット単位で処理をするための演算子です。値を32ビットの整数とみなしてビット演算をします。通常の乗算(*)除算(/)で計算するよりも計算が速いのが特徴です
値 演算子 値;
ビットシフトの場合は シフトされる値 演算子 シフト数;
~ ビットの反転 例 : ~1 結果 : -2
& ビットの論理積(AND)使用例はこちら 例 : 11& 6 結果 : 2
| ビットの論理和(OR) 例 : 11 | 6 結果 : 15
^ ビットの排他的論理和(XOR) 例 : 11 ^ 6 結果 : 13
<< ビットの算術(符号付)左シフト 例 : 11 << 2 結果 : 44
>> ビットの算術(符号付)右シフト 例 : -11 >> 2 結果 : -3
>>> ビットの論理(符号無し)右シフト 例 : 11 >>> 2 結果 : 2
<<= ビットの算術(符号付)左シフトの代入 例 : x <<= y (x = x << yと同じ)
>>= ビットの算術(符号付)右シフトの代入 例 : x >>= y (x = x >> yと同じ)
>>>= ビットの論理(符号無し)右シフトの代入 例 : x >>>= y (x = x >>> yと同じ)
[先頭へ]

二項演算子

二項演算子リスト
二つの評価する値が有り、どちらかの値を取得するための演算子です。
値(条件) 演算子 値1 : 値2;
? : 条件がtrueのとき値1となり、さもなくば値2になります。 例 : limit = (age >= 16) ? "R指定" : "一般"
[先頭へ]

typeof()演算子

typeof演算子リスト
数値文字列変数オブジェクトなどの(タイプ)を調べる演算子です。
typeof(数値文字列変数オブジェクトなど);
typeof() (タイプ)を表す文字列を返します。 例 : typeof("文字列") 結果 : string
[先頭へ]

void()演算子

void演算子リスト
戻り値なしで式を評価する演算子です。式をハイパーリンクテキストとして指定できます。
void(値、式);
void() 戻り値を返しません。 例 : <a href="javascript:void(0)">クリックしても何も無し</a>
[先頭へ]

括弧、その他

括弧、その他リスト
JavaScriptで使用する記号です。
[ ] 配列の要素を括ります。

例 : dow = new Array(7);
   dow[0] = "日";
   dow[1] = "月";
     ・
     ・
   dow[6] = "土";

( ) メソッドで指定する値、式を括ります。
. JavaScriptの基本でも解説してますが、オブジェクトプロパティメソッドを区切ります。
[先頭へ]

演算子の優先順位

演算子の優先順位リスト
上に行くほど優先順位が高い。


( ) [ ] .
! ~ - ++ -- typeof void
* / %
+ -
<< >> >>>
< <= > >=
== !=


&
^
|
&&
||
?:
= += -= *= /= %= <<= >>= &= ^= |=

[先頭へ] [Top Pageへ] [Contentsへ]


Copyright (C) pokochan 2000-2003
http://www.tees.ne.jp/~pokochan/java_script/operator.html
E-mailpokochan@mx1.tees.ne.jp