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; }