C言語の2進数変換プログラムのソースコード
順を追って説明してもらえると助かります。よろしくお願いします。
int main(void)
{
/* 変数の宣言 */
int decimal;←10進数
int binary = 0;←2進数
int base = 1;←これなに?
/* 10進数の入力 */
printf("10進数 = ");
scanf("%d", &decimal);
/* 10進数を2進数に変換 */ここら辺が良くわかりません
while(decimal>0){
binary = binary + ( decimal % 2 ) * base;
decimal = decimal / 2;
base = base * 10;
}
/* 変換した2進数の出力 */
printf(" 2進数 = %d\n", binary);
return 0;
No.1ベストアンサー
- 回答日時:
使えない糞プログラムだから憶えない方が良いかもしれないが。
ここでやっていることは入力された数の2進表記と同じになる10進数を求めている。
baseは2進桁数を表している。
ちょっと大きな数を入力すればすぐにオーバーフローしてしまうので実用には全くならないし数の概念の理解にも役立たない。
No.2
- 回答日時:
例えば、decimalに「123」って数値が入力されたとして、
123を、
123を2で割って余りを取ると、61 あまり 1
61を2で割って余りを取ると、30 あまり 1
30を2で割って余りを取ると、15 あまり 0
15を2で割って余りを取ると、7 あまり 1
7を2で割って余りを取ると、3 あまり 1
3を2で割って余りを取ると、1 あまり 1
1を2で割って余りを取ると、0 あまり 1
なので、2進数に変換した値は↑のあまりを下から並べて「1111011」だって感じでしょうか。
/* 10進数を2進数に変換 */ここら辺が良くわかりません
while(decimal>0){
binary = binary + ( decimal % 2 ) * base;
decimal = decimal / 2;
base = base * 10;
}
decimalが123(>0)で1回目のループは、
binaryに、(123を2で割ったあまり)×1を加算、0+1=1
decimalを2で割って61に
baseは10倍して10
decimalが61(>0)で2回目のループは、
binaryに、(61を2で割ったあまり)×1を加算、1+10=11
decimalを2で割って30に
baseは10倍して100
decimalが30(>0)で3回目のループは、
binaryに、(30を2で割ったあまり)×1を加算、11+0=11
decimalを2で割って15に
baseは10倍して1000
decimalが15(>0)で4回目のループは、
binaryに、(15を2で割ったあまり)×1を加算、11+1000=1011
decimalを2で割って7に
baseは10倍して10000
decimalが15(>0)で5回目のループは、
binaryに、(7を2で割ったあまり)×1を加算、1011+10000=11011
decimalを2で割って3に
baseは10倍して100000
~
と、baseは求めたあまりをbinaryに加算する際に、下から2桁目は10、下から3桁目は100って掛け算して加算するための変数です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# 至急教えてください! プログラミングの問題です! お願いします! 出力2と全く同じ出力をするように、 2 2022/06/22 23:10
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 割られる整数と割る整数を受け取って、商と余りを出力す 3 2022/07/05 10:23
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# 至急お願いします。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分母 3 2022/07/19 17:09
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ループを途中で抜けたいのですが。
-
break文でループを一気に抜ける...
-
do-while文が禁止される理由
-
if文でスキップしたい場合は?
-
入力した文字列から母音だけを...
-
プログラミングC言語についての...
-
if文の中にfor文なのか、for文...
-
Excel VBAで年度をまたぐ期間の...
-
C言語のwhile()文での大括弧の...
-
C言語forループが完結した場合...
-
C言語初心者です。このプログラ...
-
C言語 数字を削除する関数
-
getchar()の記述
-
無限ループ対策
-
独習C 素数テスタ・・・分から...
-
C言語 while文 無限ループ 不可...
-
ループの特定入力終了
-
C言語について
-
COBOLのEVALUATE文
-
H8/3048マイコンAD/DA変換について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
break文でループを一気に抜ける...
-
ループを途中で抜けたいのですが。
-
do-while文が禁止される理由
-
入力した数値を倍々するプログラム
-
For文の終了値を関数にしても問...
-
C言語forループが完結した場合...
-
エクセルVBAで Do While (1)って?
-
入力した文字列から母音だけを...
-
if文の中にfor文なのか、for文...
-
Excel VBAで年度をまたぐ期間の...
-
C言語、whileループを抜け出す...
-
for文while文の無限ループの違...
-
プログラムで関数は使わない方...
-
Cプログラムが終了しない
-
PIC のプログラムについて ど...
-
アルゴリズムです!四つの数字...
-
UWSCにてある一定の動作を無限...
-
繰り返し文の利点について
-
ループの特定入力終了
-
PAD図の書き方
おすすめ情報