【C言語】ビットを
立てる x |= (1<<bit); 
下げる x &= ~(1<<bit);
何もしない x |= (0<<bit);

■1.次のプログラムは何と表示されますか?

#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

■2.ビットの立て方

#include    <stdio.h>
#include    <stdint.h>
uint32_t bit_on(uint32_t x,int bit) {
    x |= (1<<bit);//ビットを立てる  
    return  x;
}

■3.ビットの下げ方

uint32_t bit_off(uint32_t x,int bit) {
    x &= ~(1<<bit);//ビットを下げる
    return  x;
}

ビット演算子チルダ~を使う


■4.何もしない

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の下げ方を知らない初級者も多いので
デッドコードは避けたほうが良いでしょう。