以前ポストしたやつの再掲
こんなソースを見た(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分ぐらい、左にビットシフトしたあと、その後右にビットシフトしてると思ってしまった。
ビットシフトの方が優先順位高いのね。ていうか先に右にシフトすればいいじゃん! なんでこんなコードになったんだ。