■この記事の概要
この記事では、
C言語のビット演算を使って、
ビットを「立てる」 (x |= (1<<bit)
)、
ビットを「下げる」 (x &= ~(1<<bit)
) 方法を説明しています。
さらに、
効果のないデッドコード (x |= (0<<bit)
) に関する注意点についても解説しています。
■ビットを立てる x |= (1<<bit)
#include <stdio.h>
#include <stdint.h>
uint32_t bit_on(uint32_t x,int bit) {
x |= (1<<bit);//ビットを立てる
return x;
}
■ビットを下げる x &= ~(1<<bit)
uint32_t bit_off(uint32_t x,int bit) {
x &= ~(1<<bit);//ビットを下げる
return x;
}
ビット演算子チルダ~を使う
■何もしない(デッドコード)
uint32_t bit_do_nothing(uint32_t x,int bit) {
x |= (0<<bit);//デッドコード
return x;
}
x |= (0<<bit);で
bitは立も下がりもしないので
デッドコード(何もしないコード)と
なります。
”I have no money”と同じ発想で
”0を立てる”と
コーディングする人も多いのですが、
bitの下げ方を知らない初級者も多いので
デッドコードは避けたほうが良いでしょう。
■サンプルコードのまとめ
#include <stdio.h>
#include <stdint.h>
uint32_t bit_on(uint32_t x,int bit) {
x |= (1<<bit);//ビットを立てる
return x;
}
uint32_t bit_off(uint32_t x,int bit) {
x &= ~(1<<bit);//ビットを下げる
return x;
}
uint32_t bit_do_nothing(uint32_t x,int bit) {
x |= (0<<bit);//ビットを立てたい?下げたい?
return x;
}
int main(void) {
uint32_t x = 3; //0b0011
x = bit_on(x,2);//0b0011|0b0100=0b0111
printf("%x\n",x);
x = bit_do_nothing(x,2);
printf("%x\n",x);
x = bit_off(x,2);
printf("%x\n",x);
}
➡実行結果
参考: