【C言語】
ビットを立てる、下げる、何もしないコード

ビットを立てる下げる👆👇 何もしない❓ x |= (0

■ビットを立てる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);
}

➡実行結果

7
7
3

参考:

INT17-C. 処理系に依存しない方法で整数定数を定義する