1バイト値をLSBから1ビットずつ出力する

p.249

#include <iostream>
using namespace std;
int main() {
    uint8_t byte = 0b11010100; // この1バイト値をLSBから1ビットずつ出力する。
 
    /*
    // これがテキストと同じ方法
    for(int i=0; i<8; i++){
        if(byte & 1) printf("1,"); // ビット0に1が立っていたら1を出力し、
        else         printf("0,"); // ビット0に1が立っていなかったら0を出力し、
        byte >>= 1;                // 注目ビットをビット0に持ってくる。
    }                              // を繰り返す。
    */

    
    // これも結局テキストと同じである。
    for (int i = 0; i<8; i++) {
        printf("%d,", (byte >> i) & 1); // 注目ビットをビット0に持ってきて、それが1かどうかを出力する。
    }
      

    /*
    // マスクのほうをずらしてゆくのでもよい。
    for(int i=1; i<=128; i<<=1){
        printf("%d,", i == (byte & i)); // 注目ビットが1かどうかを出力する。
    }
    */
    
    /*
    printf("%d,", 0b00000001 == (byte & 0b00000001)); 
    printf("%d,", 0b00000010 == (byte & 0b00000010)); 
    printf("%d,", 0b00000100 == (byte & 0b00000100));
    printf("%d,", 0b00001000 == (byte & 0b00001000));
    printf("%d,", 0b00010000 == (byte & 0b00010000));
    printf("%d,", 0b00100000 == (byte & 0b00100000));
    printf("%d,", 0b01000000 == (byte & 0b01000000));
    printf("%d,", 0b10000000 == (byte & 0b10000000));
    */
    return 0;
}

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