ビット演算 / 特定のビットだけに何かをしてそれ以外にはさわらない

|がbitwise OR、&がbitwise AND、^がbitwise XOR、~がbitwise NOT。

#include <stdio.h>

// 1バイトデータを2進数の数「字」として表示するための函数。
void printByteAsBin(unsigned char oneByte){
    unsigned char binStr[8];
    unsigned char mask = 128; // 0b 1000 0000;
    for(int i=0; i<8; i++){
        binStr[i] = (oneByte & mask) ? '1' : '0' ;
        mask >>= 1;
    }
    printf("%s\r\n", binStr);
}

int main(){
    unsigned char oneByte = 0b11110000; // この1バイトデータに何かをする。
    printf("元データ            : "); printByteAsBin(oneByte);
    
    oneByte |= (1<<1 | 1<<0); // bits[1:0]を1にセットし、それ以外にはさわらない。
    printf("bits[1:0]を1にセット: "); printByteAsBin(oneByte);
    
    oneByte &= ~(1<<7 | 1<<6); // bits[7:6]を0にクリアし、それ以外にはさわらない。
    printf("bits[7:6]を0にクリア: "); printByteAsBin(oneByte);
    
    oneByte ^= (1<<4 | 1<<3); // bits[4:3]をトグルし、それ以外にはさわらない。
    printf("bits[4:3]をトグル   : "); printByteAsBin(oneByte);
    
    return 0;
}

f:id:ti-nspire:20190220130521p:plain