ビット演算子 2015/03/01
ビット演算子を各プログラミング言語で比較。
ビット演算子のオペランドは整数に限られるが、論理型でも同じ演算子が使えるものもある。
Go言語 (golang) 2015/03/01
&
- ビット積(AND)。オペランドは整数に限られ、
bool
では使えない。 |
- ビット和(OR)。オペランドは整数に限られ、
bool
では使えない。 ^
- ビットごとの否定(NOT)。符号は反転される。オペランドは整数に限られ、
bool
では使えない。 &^
- ビットクリア(AND NOT)。オペランドは整数に限られ、
bool
では使えない。 <<
- 左シフト(整数を2倍)。符号ビットは左端で消えるので符号は保存されない。
>>
- 右シフト(整数を2分の1)。左オペランドが符号ありの場合は、左端は符号ビットで埋められるので符号は保存される。 左オペランドが符号なしの場合は、左端は0で埋められる。
Java 2017/07/24
&
- ビット積(AND)。
boolean
同士でも使える。 |
- ビット和(OR)。
boolean
同士でも使える。 ^
- ビットごとの排他的論理和(XOR)。
boolean
同士でも使える。 ~
- ビットごとの否定(NOT)。
boolean
の否定は!
という演算子を使う。 <<
- 左シフト(整数を2倍)。符号ビットは左端で消えるので符号は保存されない。
>>
- 符号あり右シフト(整数を2分の1)。左端は符号ビットで埋められるので符号は保存される。
>>>
- 符号なし右シフト(整数を2分の1)。左端は0で埋められるので負の場合は符号が保存されない。
&
, |
, ^
は整数同士だけでなく、boolean
同士でも使える。
論理演算子参照。
シフト演算子はint
に対しては31まで、long
に対しては63までしかシフトできない。シフト演算子の右に32または64を置くと、一切シフトされず、それを超える場合は32または64で割った余りの数だけシフトされる。つまりint
の場合は a << b
は a << (b & 0x1f)
とまったく同じになる。
Bitwise and Logical Operators | Java Language Specification
http://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.22
Bitwise Complement Operator ~
| Java Language Specification
http://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.15.5
Shift Operators | Java Language Specification
http://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.19
PHP 2014/04/12
&
- ビット積(AND)
|
- ビット和(OR)
^
- ビットごとの排他的論理和(XOR)
~
- ビットごとの否定(NOT)
<<
- 左シフト(整数を2倍)。符号ビットは左端で消えるので符号は保存されない。
>>
- 右シフト(整数を2分の1)。左端は符号ビットで埋められるので符号は保存される。
ビット演算子 | PHP Manual
http://php.net/manual/ja/language.operators.bitwise.php
Python 2014/07/31
&
- ビット積(AND)
|
- ビット和(OR)
^
- ビットごとの排他的論理和(XOR)
<<
- 左シフト(整数を2倍)。左端で整数のビット数を超えると
OverflowError
が発生する。 >>
- 右シフト(整数を2分の1)。左端は符号ビットで埋められるので符号は保存される。
ビット演算 | Python 2.7 documentation
http://docs.python.jp/2/reference/expressions.html#binary-bitwise-operation
ビット演算 | Python 3 documentation
http://docs.python.jp/3/reference/expressions.html#binary-bitwise-operations
シフト演算 | Python 2.7 documentation
http://docs.python.jp/2/reference/expressions.html#shifting-operation
シフト演算 | Python 3 documentation
http://docs.python.jp/3/reference/expressions.html#shifting-operations