ぼく用あれこれまとめ

ビット演算子

最終更新:

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ではこれを演算子オーバーロードしてるわけです。
記事メニュー
目安箱バナー