このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

データをビット/バイトのレベルで観察する

文字列と整数の相互変換

  1. 実用上は、適切なライブラリ関数を探す。
  2. 練習としては、自前で作る。

文字列→整数 は、自前で作っても割と簡単。
整数→文字列 は、戻り値をどうするかで悩むかもしれない。

変換ではなくて直接出力なら割と簡単

putcharだけを使って(他のライブラリ関数は一切使わない)、整数を標準出力に書き出す関数を作れ。最後に改行は付けなくていい。

  1. print_int_d(int x) -- 通常の十進で。
  2. print_int_x(int x) -- 16進で。
  3. print_int_b(int x) -- 2進で。

文字列を文字番号で出力

  • print_str_as_numbers(char *s) -- 各文字を十進番号で、文字と文字の区切りにカンマを挿入

scanfは推奨しない

理由はそのうち。

再帰

カニズムを理解して使う。

データのバイトサイズ

sizeof, limits.h

ビット演算

ビットレベルの操作なら、割り算や余りより、ビットシフトやビットマスク(アンド演算)のほうがむしろ分かりやすい。

結局

コマンドライン引数から入力を受け取り、ビット演算を使って操作してみる。