C言語で進数変換プログラム
整数 x を n 進数で表記するプログラム
#include <stdio.h> #include <math.h> int convert(int x, int n){ int y=0, i=0, z; while(x > 0){ z = x%n; y += z*pow(10, i); x = x/n; i++; } return y; } int main(void){ printf("%d\n", convert(5, 2)); }
アルゴリズム解説
- xが0以下の場合、ループ終了
- zにxをnで割った剰余を代入
- yにy+z*10iを代入
- xをnで割った商を代入
- iにi+1を代入
- 1へ戻る
実行を追ってみる
例)x=5, n=2のとき つまり、10進数の値5を2進数に変換したいとき
while文 1ループ目( x : 5)
- z : 5%2 = 1
- y : 0 + 1*100 = 1
- x : 5/2 = 2
- i : 1になる
while文 2ループ目(x : 2)
- z : 2%2 = 0
- y : 1 + 0*101 = 1
- x : 2/2 = 1
- i : 2になる
while文 3ループ目(x : 1)
- z : 1%2 = 1
- y : 1 + 1*102 = 101
- x : ½ = 0
- i : 3になる
while文 4ループ目(x : 0)
xが0になったため、ループを抜けて y を返す