サイトアイコン ツナのエンジニアブログ

ビット演算子

ビット演算とは

ビット演算子を使えば2進数のビット単位での演算ができます。

簡単に言えば論理演算子を1ビット単位で考えたものです。
https://tunasalmon.com/2016/12/17/%e8%ab%96%e7%90%86%e6%bc%94%e7%ae%97%e5%ad%90/

ビット演算子一覧

名称 構文 意味 優先順位 結合規則
左シフト演算子 a << b 左にビットシフト 6
右シフト演算子 a >> b 左にビットシフト 6
左シフト代入演算子 a <<= b 左にビットシフトして代入 15
右シフト代入演算子 a >>= b 右にビットシフトして代入 15
ビット積演算子 a & b ビット単位のaかつb 9
ビット和演算子 a | b ビット単位のaもしくはb 10
ビット否定演算子 ~a ビット単位のaでない 2
ビット排他的論理和演算子 a ^ b 同じなら0違うなら1 11
ビット積代入演算子 a &= b ビット積を代入 15
ビット和代入演算子 a |= b ビット和を代入 15
ビット排他的論理和代入演算子 a ^= b ビット排他的論理和を代入 15

ビットシフト

ビットシフトとはデータのビット列を左右にずらすことです。

01100010


という8桁の2進数を左に1ビットシフトすると

11000100


となります。
左に1つ分ずらし、足りない部分に0をいれ、あまった部分は切り捨てます。

左に1つずらすということはもと数に2を掛けた値になります。
これは10進数で考えるとわかりやすいでしょう。

0123


という10進数の数を左に1つずらすと

1230


でもとの数の10倍になります。

右シフトも同様に1つずらすごとに1/2倍されていきます。

これを使うことで掛け算、割り算を表現することができます。
詳しくはこちらでまとめています。
https://tunasalmon.com/2017/10/13/2%e9%80%b2%e6%95%b0%e3%81%ae%e4%b9%97%e9%99%a4%e7%ae%97/



(adsbygoogle = window.adsbygoogle || []).push({});

モバイルバージョンを終了