C#で2進数と10進数の変換を体験しよう

広告

基本情報の学習では、2進数と10進数の変換が登場します。

たとえば、次の関係です。

0101 = 5

授業では、次のような重みを使って考えます。

8 4 2 1
0 1 0 1

1が立っている場所は、41です。

4 + 1 = 5

したがって、2進数の0101は、10進数では5になります。

今回は、この変換をC#のプログラムで体験してみます。

今日の目標

今日の目標は、難しいプログラムを作ることではありません。

次の変換を、C#で実際に動かして確認します。

5 → 0101
0101 → 5

C#の命令をすべて暗記する必要はありません。

Visual Studioのインテリセンスを使いながら、候補を選んで入力していきましょう。

プロジェクトを作成する

Visual Studioを起動します。

最初の画面で、次の順番に操作します。

  1. 「新しいプロジェクトの作成」をクリックする
  2. 「コンソール アプリ」を選ぶ
  3. 「次へ」をクリックする
  4. プロジェクト名を入力する
  5. 保存場所を確認する
  6. 「次へ」をクリックする
  7. フレームワークを確認する
  8. 「作成」をクリックする

プロジェクト名は、たとえば次の名前で構いません。

BinaryConverter

プロジェクトが開いたら、最初から書かれているコードを削除して、今回のコードを入力します。

10進数の5を2進数に変換する

最初に、10進数の5を2進数に変換します。

次のコードを入力してください。

int number = 5;

string binary = Convert.ToString(number, 2);

Console.WriteLine(binary);

実行すると、次のように表示されます。

101

10進数の5は、2進数では101です。

コードの意味を確認しよう

最初の行です。

int number = 5;

これは、numberという名前の箱に、整数の5を入れています。

次の行です。

string binary = Convert.ToString(number, 2);

これは、numberに入っている数値を、2進数の文字に変換しています。

最後の2は、2進数に変換することを表しています。

変換された結果は、binaryという名前の箱に入ります。

最後の行です。

Console.WriteLine(binary);

binaryに入っている内容を画面に表示します。

101を0101と表示する

授業では、2進数を4桁にそろえて、0101と書くことがあります。

しかし、先ほどのプログラムでは、先頭の0が省略されて101と表示されました。

4桁で表示したい場合は、次のように変更します。

int number = 5;

string binary = Convert.ToString(number, 2).PadLeft(4, '0');

Console.WriteLine(binary);

実行結果は次のようになります。

0101

PadLeftとは

今回追加した部分は、次の箇所です。

.PadLeft(4, '0')

これは、文字の左側に0を追加して、全体を4桁にそろえるための命令です。

たとえば、変換結果が101の場合、左側に0が1つ追加されます。

101
↓
0101

PadLeftの詳しい仕組みを覚える必要はありません。

今回は、

4桁にそろえるための命令

と考えれば十分です。

数字を変更してみよう

プログラムの次の部分を変更して、結果を確認してみましょう。

int number = 5;

たとえば、56に変更します。

int number = 6;

実行結果は次のようになります。

0110

ほかの数字も試してみましょう。

1
3
7
8
10
15

実行する前に、どのような2進数になるか予想してから試してみるのもよいでしょう。

2進数の0101を10進数に変換する

次は、逆の変換を体験します。

先ほど入力したコードを削除して、次のコードを入力してください。

string binaryText = "0101";

int number = Convert.ToInt32(binaryText, 2);

Console.WriteLine(number);

実行すると、次のように表示されます。

5

これで、2進数の0101を10進数の5に変換できました。

コードの意味を確認しよう

最初の行です。

string binaryText = "0101";

binaryTextという名前の箱に、文字として0101を入れています。

0101は数字のように見えますが、今回は文字として扱うため、ダブルクォーテーションで囲んでいます。

"0101"

次の行です。

int number = Convert.ToInt32(binaryText, 2);

これは、binaryTextに入っている2進数を、10進数の整数に変換しています。

最後の2は、元の文字が2進数であることを表しています。

最後の行です。

Console.WriteLine(number);

変換された10進数を画面に表示します。

2進数を変更してみよう

次の部分を変更して、結果を確認してみましょう。

string binaryText = "0101";

たとえば、0110に変更します。

string binaryText = "0110";

実行結果は次のようになります。

6

ほかにも、次の2進数を試してみましょう。

0001
0011
0111
1000
1010
1111

こちらも、実行する前に10進数の値を予想してみましょう。

今回は0と1だけを入力する

2進数に使える数字は、01だけです。

そのため、次のような値は2進数ではありません。

0102
1234
abcd

今回は入力内容を確認するプログラムは作りません。

必ず、01だけを使った2進数を入力してください。

間違った値を入れてエラーが出た場合は、プログラムが壊れたわけではありません。

入力した値を確認して、もう一度実行すれば大丈夫です。

余裕がある人は入力に挑戦しよう

ここからは発展です。

時間に余裕がある人は、実行中に数字を入力するプログラムも試してみましょう。

10進数を入力し、2進数に変換するコードです。

Console.WriteLine("10進数を入力してください");

string input = Console.ReadLine();

int number = int.Parse(input);

string binary = Convert.ToString(number, 2).PadLeft(8, '0');

Console.WriteLine(binary);

たとえば、5を入力すると、次のように表示されます。

10進数を入力してください
5
00000101

今回は、必ず整数を入力してください。

文字や小数を入力するとエラーになります。

エラーを防ぐ仕組みは、C#を本格的に学習するときに扱います。

エラーが出たときに確認すること

プログラムを入力していると、エラーが出ることがあります。

エラーが出ることは、プログラミングでは珍しいことではありません。

まずは、次の点を確認しましょう。

セミコロンが付いているか

C#では、行の最後にセミコロン;が必要です。

間違った例です。

Console.WriteLine(binary)

正しい例です。

Console.WriteLine(binary);

ダブルクォーテーションが左右にあるか

文字は、ダブルクォーテーション"で囲みます。

間違った例です。

string binaryText = "0101;

正しい例です。

string binaryText = "0101";

丸かっこが閉じているか

(を書いたら、対応する)が必要です。

間違った例です。

Console.WriteLine(binary;

正しい例です。

Console.WriteLine(binary);

記号が全角になっていないか

プログラムで使う記号は、半角で入力します。

次の記号が全角になっていないか確認してください。

( )
" "
;
,

日本語入力がオンになっていると、記号が全角になる場合があります。

今日使った主な命令

今回使った命令を整理します。

Console.WriteLine()

画面に文字や数値を表示します。

Convert.ToString(number, 2)

10進数の数値を、2進数の文字に変換します。

Convert.ToInt32(binaryText, 2)

2進数の文字を、10進数の整数に変換します。

PadLeft(4, '0')

文字の左側に0を追加して、4桁にそろえます。

発展で使った命令です。

Console.ReadLine()

キーボードから入力された文字を受け取ります。

int.Parse()

入力された数字の文字を、整数に変換します。

今回のまとめ

今回は、C#を使って、2進数と10進数の変換を体験しました。

行った変換は、次の2つです。

5 → 0101
0101 → 5

重要なのは、C#の文法をすべて覚えることではありません。

座学で学んだ2進数が、実際のプログラムでも扱えることを確認できれば成功です。

また、プログラムの数字を変更して実行すると、さまざまな変換結果をすぐに確認できます。

教科書で計算した結果と、プログラムで表示された結果が同じになるか、実際に動かしながら確かめてみましょう。

訪問数 23 回, 今日の訪問数 23回

広告

C#

Posted by hidepon