このガイドラインでは、C で 2 進数を 10 進数に変換する方法について説明します。
概念自体に入る前に、C の 2 進数と 10 進数とは何かを見てみましょう。
C の 2 進数と 10 進数の形式
2 進数は 0 と 1 の 2 つの数字の組み合わせで表される数で、2 進法と呼ばれます。一方、10 進数は、0 から 9 までの数字で構成される 10 進数です。
バイナリという名前でわかるように、2 を意味するため、0 と 1 の 2 つの数字の組み合わせの形式の数値がある場合、それらを 2 進数と呼びます。これは、基数 2 の数値システムと呼ばれます。
C で 2 進数を 10 進数に変換する理由
0 と 1 の組み合わせが多数考えられるため、開発者にとって 2 進数の操作は困難です。一方、10 進数は理解しやすく、処理しやすいため、C プログラムではより高速で効率的な方法になります。 C で 2 進数を 10 進数に変換するには、すべての 2 進数を適切な 2 の累乗で乗算し、その結果を加算します。これは、ループを使用して行われます。
C で 2 進数を 10 進数に変換する単純なアルゴリズム
以下は、6 つの簡単なステップを使用して C で 2 進数を 10 進数に変換する単純なアルゴリズムです。
- ユーザーからの入力として 2 進数を受け取ります。
- 変数「decimal」を 0 に、変数「base」を 1 に初期化します。
- モジュラス演算子 (%) を使用して 2 進数の右端の桁を抽出し、この桁と基数の積を 10 進数変数に追加します。
- ベース変数に 2 を掛けます。
- 整数除算 (/) を使用して、2 進数から右端の桁を削除します。
- すべての数字が処理されるまで、手順 3 ~ 5 を繰り返します。
- 「decimal」変数に格納されている 2 進数の 10 進数値を表示します。
C で 2 進数を 10 進数に変換する
以下は、C プログラミングで 2 進数を 10 進数に変換する簡単なコードです。
#include
#include
整数 主要 ( ) {
長さ 長さ a ;
printf ( '2 進数を挿入してください:' ) ;
スキャン ( '%lld' 、 & a ) ;
printf ( 「2 進数で %lld = 10 進数で %d」 、 a 、 binaryToDecimal ( a ) ) ;
戻る 0 ; }
整数 binaryToDecimal ( 長さ 長さ a ) {
整数 12月 = 0 、 b = 0 、 r ;
その間 ( a != 0 ) {
r = a % 10 ;
a /= 10 ;
12月 += r * 捕虜 ( 2 、 b ) ;
++ b ;
}
戻る 12月 ;
}
上記のコードでは、名前としてグローバル関数が作成されます 「バイナリからデシマル」 .次に、メインで long long 変数を次のように宣言します。 「あ」 を呼び出して、2 進数を追加し、それを 10 進数に変換するようにユーザーに依頼します。 「バイナリからデシマル」 a」のパラメーターを持つ関数。の中に 「バイナリからデシマル」 関数定義 while ループによる 10 進変換。
出力
ビルトインも使える strtol() C プログラミングで 2 進数を 10 進数に変換する関数。
以下は、そのような関数のコードです。
#include#include
整数 主要 ( ) {
チャー binary_string [ ] = 「1110」 ;
チャー * ポイント ;
長さ decimal_value ;
decimal_value = 墜落した ( binary_string 、 & ポイント 、 2 ) ;
printf ( 「バイナリ文字列」 % s ' は 10 進値 %ld と同じです。 \n ' 、 binary_string 、 decimal_value ) ;
戻る 0 ;
}
上記のコードはバイナリ文字列を変換します 「1110」 を使用して、同等の 10 進数値に変換します。 strtol() この関数は、バイナリ文字列、char ポインターへのポインター、および数値システムの基数を引数として受け取ります。最後に、次を使用して結果をコンソールに出力します。 printf()。
出力
結論
私たちが知っているように、人間は管理が難しいため、2進数と比較して10進数に精通しています。 10 進数は 10 進数であるため算術演算を実行しやすく、2 進数に比べて処理が高速であるため、2 進数は 10 進数に変換されます。上記の概要では、ユーザー定義関数と組み込み関数を使用した C プログラムでの 2 進数の 10 進数への変換について説明しました。 strtol() 関数。