2011年11月22日火曜日

10進から2進への変換

※ 私の発想ではありません.どこかで見かけただけです.

考え方

  1. 変換したい10進数と比較用の数値1,カウンタ変数を用意する.カウンタは0で初期化.
  2. 10進数と比較用数値のANDをとる.結果が0でなければカウンタの示すビットに1を立てる.
  3. 比較用数値を1ビット左へシフト.カウンタをインクリメントする.
  4. すべてのビットが確定するまで2, 3を繰り返す.

10進から2進へ変換できる理由

  • 10進といってもコンピュータ内部では2進表現であり,これを文字として書き出したいだけ.つまり各ビットごとに1か0かを判定すればよい.
  • あるビットを調べたければ,そこだけ1, 残りを0で埋めたものとのANDをとる.(他のビットをマスクする)
  • 条件判定式は0かそうでないかを見る.
    ex. while(1)でも,while(100)でも同じこと.

変換指定子に%bとかあればいいのに.

0 件のコメント:

コメントを投稿