閑古鳥

オールドプログラマの日記。プログラミングとか病気(透析)の話とか。

特定のビットを落とす方法

ビット演算なんてろくにやったこがないものだから、見出しのような、特定のビットを落としたいというだけのことで少し考え込んでしまいました。

最初は、以下のような回りくどい方法を使っていたのですが……。

if(bit & 0x10)
{
    bit ^= (0x10);
}

いちいちそのビットが立っているか調べないといけない(立っていなかった場合、そのままにしたいのにビットが立ってしまって値が変わる)とか、間抜けな事をやっていましたが、次のようにやったら、一行で済んでしまいました。

bit &= ~0x10;

……プログラマ失格だよぉ。このくらい、考える前から思いつけないと。