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)の最下位桁以外をマスクできる。
- 参考になったページ
- 接尾語「U」について: データ型の修飾
- シフトについて: 複雑な演算子
- マスクについて: http://www.geocities.jp/ky_webid/c/049.html