この記事を書き終えたら、また「簡単すぎる」と言う人が出てくるでしょうね…… さて本題に入ります。今週、プログラミングの授業で先生からクラス全員に出された課題は、10進数を2進数に変換する方法でした。数学的に計算するなら難しくありません。割り算の余りを取っていく短除法を使えばいいだけです。
原理の解説
計算の過程を式で書くと次のようになります。(10 を 10進数から 2進数に変換する場合)
10/2=5...0
5/2=2...1
2/2=1...0
1/2=0...1
したがって、10 の 2進数は 1010 になります。
この式に従えば、do...loop の繰り返し処理を書けます。商が 0 以下になったらループを終了します。また、割り算のたびに余りと商を記録し、商を次の割り算に使います。最後に余りを「下から上へ」出力すれば答えになります。言葉だけでは少し分かりにくいかもしれないので、コードを見てみてください~
VB のコード:
VBScript ファイルのダウンロード: Box.net|4Shared|Dropbox|Google
msgbox("此程式可幫你把十進位轉成二進位")
x=inputbox("請輸入一個數字") '変換する数値を取得
a=x
do while(a>0) 'a>0 の間、割り算を実行
q=a mod 2 & q '余りを取得。ここでのポイントは下から上へ出力すること
a=a2 '次の割り算のために整数部分を取得
loop
msgbox(q) '結果を出力C++ のコード:
コードのダウンロード:Box.net|4Shared|Dropbox|Google
#include
#include
using namespace std;
int main()
{
int x,y,;
cout«“Please input one number:”; cin»x;
cout«“result:"«endl;
y=x;
do{
cout«!(y % 2)«endl;
y=(int)y/2;
}while(y>0);
return 0;
}
