山本ワールド
演算子
代入演算子
var=exp
expをvarに代入する。算術演算子
exp1 + exp2
加算演算子exp1 - exp2
減算演算子exp1 * exp2
乗算します。exp1 / exp2
除算します。exp1 % exp2
剰余を求めます。++exp
expに1を足してから値を返します。exp++
expに1を足す前に値を返します。--exp
expに1を引いてから値を返します。exp--
expに1を足く前に値を返します。単項演算子
-
符号を反転させます。!
論理を否定します。複合代入演算子
var+=exp // var=var+exp
var-=exp // var=var-exp
var*=exp // var=var*exp
var/=exp // var=var/exp
var%=exp // var=var%exp
var&=exp // var=var&exp
var|=exp // var=var|exp
var^=exp // var=var^exp
var<<=exp // var=var<<exp
var>>=exp // var=var>>exp
var>>>=exp // var=var>>>exp
3項演算子
exp1 ? exp2 : exp3
exp1がtrueの場合exp2をfalseの場合はexp3を返す。typeof(exp)
expの型を表す文字列を返します。
typeof(true) // "boolean"
typeof("zyx") // "string"
typeof(987.65) // "number"
typeof(new object()) // "object"
typeof(function() {}) // "function"
typeof(undefined) // "undefined"
typeof(null) // "object"
関係演算子
exp1 < exp2
右側が大きいときtrueexp1 > exp2
左側が大きいときtrueexp1 <= exp2
右側が大きいかまたは等しいときtrueexp1 >= exp2
左側が大きいときまたは等しいときtrueexp1 == exp2
値が等しいとき。以下の場合もtrueとなります。
a=10; b="10" a==b
exp1 != exp2
値が等しくないとき。exp1 === exp2
値も型も等しいとき。 以下の場合はfalseとなります。a=10; b="10" a==b
exp1 !== exp2
値か型が等しくないとき。論理演算子
exp1 && exp2
exp1 | exp2 | 結果 |
---|---|---|
false | false | false |
false | true | false |
true | false | false |
true | true | true |
exp1 || exp2
exp1 | exp2 | 結果 |
---|---|---|
false | false | false |
false | true | true |
true | false | true |
true | true | true |
! exp1
exp1 | 結果 |
---|---|
false | true |
true | false |
ビット演算子
シフト演算子
シフト演算子の場合、値は32ビット整数に変換されてからシフトされます。算術シフト exp1>>exp1
exp1を右へexp1ビット右シフトさせます。符号(最上位ビット)は維持し左側には符号ビット(赤字)を挿入します。以下は4bit右シフトさせた例を示します。exp1 0x87654321 0b10000111011001010100001100100001 シフト後 0xf8765432 0b11111000011101100101010000110010
論理シフト exp1>>>exp2
exp1を右へexp1ビット右シフトさせます。左側には0(赤字)を挿入します。以下は4bit右シフトさせた例を示します。exp1 0x87654321 0b10000111011001010100001100100001 シフト後 0x08765432 0b00001000011101100101010000110010
論理シフト exp1<<exp2
exp1を右へexp1ビット左シフトさせます。右側には0(赤字)を挿入します。以下は4bit左シフトさせた例を示します。exp1 0x87654321 0b10000111011001010100001100100001 シフト後 0x76543210 0b01110110010101000011001000010000
16進数、2進数での表示
シフトの結果を見るために16進数、2進数変換にtoStringを使用しましたが、負の値の場合正常に動作しません。toStringする前に>>>演算子で整数に変換してからtoStringで文字列変換するとうまくいきます。以下に動作例を示します。
10進数の場合、例えば負の0x87654321が2271560481に変換されます。>>演算子で整数に変換すると上手くいきます。
ちなみにExcel 2010の場合、内部的に40bit長(16進数で10桁使用できる)の様なので32bitで計算するJavascriptとは負の場合答えが異なります。
LibreOffice Calcの場合、内部的に32bitの様です。ただし符号付きではないようです。
exp1 & exp2
値を32ビット整数とみなしてビットごとのANDを取ります。ビットごとの真理値表
exp1 | exp2 | 結果 |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
exp1 | exp2
値を32ビット整数とみなしてビットごとのORを取ります。ビットごとの真理値表
exp1 | exp2 | 結果 |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
exp1 ^ exp2
値を32ビット整数とみなしてビットごとのXORを取ります。ビットごとの真理値表
exp1 | exp2 | 結果 |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
~exp1
値を32ビット整数とみなしてビットごとのNOTを取ります。ビットごとの真理値表
exp1 | 結果 |
---|---|
0 | 1 |
1 | 0 |
Copyright (C) 2012 山本ワールド All Rights Reserved.