※ 私の発想ではありません.どこかで見かけただけです.
考え方
- 変換したい10進数と比較用の数値1,カウンタ変数を用意する.カウンタは0で初期化.
- 10進数と比較用数値のANDをとる.結果が0でなければカウンタの示すビットに1を立てる.
- 比較用数値を1ビット左へシフト.カウンタをインクリメントする.
- すべてのビットが確定するまで2, 3を繰り返す.
10進から2進へ変換できる理由
- 10進といってもコンピュータ内部では2進表現であり,これを文字として書き出したいだけ.つまり各ビットごとに1か0かを判定すればよい.
- あるビットを調べたければ,そこだけ1, 残りを0で埋めたものとのANDをとる.(他のビットをマスクする)
- 条件判定式は0かそうでないかを見る.
ex. while(1)でも,while(100)でも同じこと.
変換指定子に%bとかあればいいのに.
0 件のコメント:
コメントを投稿