ぼく用あれこれまとめ
ビット演算子
最終更新:
bokuyo
-
view
ビット演算子(C++)
8進数/16進数の表し方
int cloud = 0xFF7; //4087(d)の16進表記 int strife = 0234; //156(d)の8進表記
- 0x~で16進数表記、0~で8進数表記
NOT 演算
int eureka = ~ 7; //1000 (0111の否定)
論理積 (AND)
int eureka = 7 & 7; //0111 & 0111 = 0111 int renton = 7 & 11; //0111 & 1011 = 0011 int rayout = 7 & 8; //0111 & 1000 = 0000
論理和 (OR)
int eureka = 7 | 7; //0111 | 0111 = 0111 int renton = 9 | 2; //1001 | 0010 = 1011 int rayout = 3 | 12; //0011 | 1100 = 1111
排他的論理和 (XOR)
int eureka = 7 ^ 7; //0111 ^ 0111 = 0000 int renton = 10^ 5; //1010 ^ 0101 = 1111 int rayout = 7 ^ 14; //0111 ^ 1110 = 1001
右シフト
int eureka = 13 >> 1; //01101 >> 1 = 0110 int renton = 13 >> 2; //01101 >> 2 = 011 int rayout = 13 >> 3; //01101 >> 3 = 01
- 1回右シフトすると1/2倍、2回で1/4倍、3回で1/8倍…、と1/(2のn乗)倍する演算子。あまりは切り捨て。
- std::cinではこれを演算子オーバーロードしてるわけです。
左シフト
int eureka = 3 << 1; //011 << 1 = 0110 int renton = 3 << 2; //011 << 2 = 01100 int rayout = 3 << 3; //011 << 3 = 011000
- 1回左シフトすると、2倍、2回で4倍、3回で8倍…、と2のn乗倍できる便利な演算子。
- std::coutではこれを演算子オーバーロードしてるわけです。