ビットシフトのメモ

以前ポストしたやつの再掲

こんなソースを見た(C言語

mask = 0;
for(i = 0 ; i < num ; i++)
{
    mask |= 1<<i;

パッと見て、1行に出来そうだと思ったのだが、5分ぐらい悩んでしまう。退化してるな自分。

mask = ~(~0 << num);

次はこれ

hoge = hoge&mask<<allbitnum;
hoge = hoge>>allbitnum

10分ぐらい、左にビットシフトしたあと、その後右にビットシフトしてると思ってしまった。
ビットシフトの方が優先順位高いのね。ていうか先に右にシフトすればいいじゃん! なんでこんなコードになったんだ。