どうも!リョクちゃです。
今回は、タイトル通り10進数を2進数に変換する関数について紹介していきます。
関数を作成する前に10進数を2進数にする方法を簡単に説明し、
ざっくりとイメージをつかんでいただき、関数を作成することで
実際に10進数が2進数に変換されることを確認していきます。
その中で理解を深めてもらえたらなと思います。
ちなみに前回はこちら、
目次
10進数と2進数
10進数とは、数を書き表す方法(記数法)の一つで、基数を十とした表記法のこと。
とWeb上で説明されています。
普段私たちが目にしたり使っている0~9の数字は10進数で表現されています。
一方で2進数は、0と1で表現される方法になり、コンピュータ上で一般的に利用されます。
要は、コンピュータが認識できる表記方法として扱われます。
コンピュータでは、この0と1を電気信号のOFFとONの状態として
0や1にそれぞれ対応させています。
例えば、10進数の15であれば、2進数では、1111と表現されます。
どうして10進数の15は2進数では1111となるのか、以下で説明していきます。
10進数から2進数に変換することを基数変換と呼びます。
上記の方法手順としては、
10進数の整数(15)を変換したい基数(2)で割り、商と余りを求めます。
求まった商をさらに基数(2)で割り、余りを求めます。
これを商が0になるまで繰り返します。
商が0になるまで計算が終わったら、最後に求まった余りの値を一番上の桁として、
並べていった値が変換したい基数の値となります。
下に図でイメージを示します。
15を2で割った商が7で余りが1になります。
15 ÷ 2 = 7 余り 1
ですね。
これを最後まで計算したのが下図になります。
こうして求まった余りを下から並べていったのが2進数の答えとなります。
したがって、10進数の15は2進数で1111と変換することができます。
今回は、この計算処理を関数として作成し、10進数を2進数に変換していきます。
準備編:フォームの作成
下のようなフォームを作成します。
実行環境
筆者の実行環境は、
- VisualStudio2019
- Windows 10 64bit
- .Net Framework 4.5.1
になります。
※ Windows7 8 8.1でも動作はできますが、画面デザインの表示が変わるかもしれません。
アプリケーションの目的
変換前のボックスに変換したい数字を入れ、
ボタンを押すことで変換先に変換された値が正しく表示することを目的とします。
今回の場合、10進数を2進数に変換した値が正しく表示されればゴールとなります。
プログラム編
それでは、前述で10進数を2進数に変換する方法は説明したので、
それに基づき関数を作成していきます。
作成した関数は、こちらになります。
<10進数を2進数に変換する関数>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Public Class frmNconvert Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ' 10進数のテキストボックスが空白なら処理をしない If Me.TextBox1.Text <> "" Then ' 変数recに関数の戻り値を格納 Dim rec As String = TentoTwo(Me.TextBox1.Text) ' 結果を2進数ボックスへ表示 Me.TextBox2.Text = rec End If End Sub ' 10進数を2進数に変換 Private Function TentoTwo(ByVal value As String) As String If Math.Floor(value / 2) Then Return TentoTwo(Math.Floor(value / 2)) + CStr(value Mod 2) End If Return CStr(value Mod 2) End Function End Class |
関数の説明をしていきます。
最初に条件分岐として、value / 2が割り切れれば、条件分岐下の処理を行います。
ここでMath.Floorを使用しているのは、value/2の解に小数点が含まれてしまうからです。小数点以下は今回の計算では使用しないので、
Math.Floorを使用することで小数点以下を切り捨てしています。
小数点以下を切り捨てしれくれる関数が、MathクラスのFloorメソッドになります。
条件分岐下の処理でRetrun文では、さらにTenToTwo関数を呼び出しています。
それから、value Mod 2で求まった余りの値を文字列として連結しています。
ModはVB.Netで余りを求める際に使う記述法になります。
他の言語では、Modは%として扱われます。
最終的に割り切れなくなったら(この場合は0)、変換先の値を戻り値として返します。
といった流れを作成した関数では行っています。
実行編
それでは作成した関数を実際に実行してみます。
変換したい値を10進数ボックスに入力します。
そして変換ボタンを押します。
変換した結果が正しく表示されればクリアです。
10進数の15は2進数では1111となることがわかりました。
いくつか例を挙げていきます。
10進数の5を2進数に変換した場合
10進数の777を2進数に変換した場合
まとめ
実際に10進数を2進数に変換する関数を作成することで、
どのように変換していくのか過程も説明していきました。
VB.NetではConvertクラスのToStringメソッドを使うことで、
2,8,10,16進数に変換してくれる便利なクラスが用意されていますが
今回は実際に関数を一から作成することで理解を深めるといったことが目的となります。
この記事で作成した関数を参考に、10進数をn進数に変換する関数も
作成してもらえたらなと思います。
最後までご覧いただきありがとうございます。
・こちらの書籍を参考にVB.Net勉強しています。