C言語シフト演算

電子計算機のはなし

C言語、ビットパターンを確認したいとき、

int target = 100;

int a = (target >> i) & 0x01

とかってやりますよね。

これって、最近知ったんだけど、

target が、 整数型じゃないとエラーになるのね!

float とか、double だとコンパイルエラーを吐く。

低レイヤー言語らしく、実数型の数値もシフト演算できる機能なんてあったらおもしろくない?

double a = 1;

double b = a >> 1;

printf(“%lf\n”, b); // 0.5

自分がコンパイラを作るんだったら、こんな遊び心のある論理シフト演算とか作ってみたいね。