char型とか(C学習中)

今日覚えたこと

char型

char型は、文字を表す整数型で、3種類ある

  • signed char
  • unsigned char
  • char

無印のchar型は、signed charかunsigned charのどちらかと等しい型。どちらに等しいかは、処理系に依存する。・・・ということは、処理系に依存する書き方をしないためには、無印charを使わない方がよい?

文字を2進数で表示する方法

1ビットずつ unsigned型 10進の1とのANDを取る。その際、上位桁から下位桁へ順に評価するために、整数値を右シフトする。

int i;
unsigned char x;
/* xにナニカ文字を代入 */
for(i = CHAR_BIT - 1; -1 < i; i--){
    putchar(((x >> i) & 1U) ? '1' : '0');
}

unsigned型 10進の1(1U)は、たとえばCHAR_BITが8の処理系であれば、00000001になる。1UとのANDを取ることで、右シフトした値(x >> i)の最下位桁以外をマスクできる。