【スクラッチ】2進数と16進数を勉強してみよう

Scratch星人
Scratch星人

コンピューターの世界では「0」と「1」が使われている。という話を聞いたことがないでしょうか?

実は、私たちが入力した数字や文字は、コンピューターの中で「0」と「1」に変換されて処理しているんです!

この考え方を二進法と言い、変換された0・1の数字を2進数と言います。

この記事では、実際に2進数や16進数を理解するために、変換ツールを作成していきます。

今の時点では、どういうこと?と思ったあなたも最後まで読み進めていくことで納得できると思います!

10進数とは?(2進数や16進数って何?)

私たちは数を「0, 1, 2, 3, …9, 10, 11」と数えていくと思います。

0〜9まで、10個の数字のあとは左に1がつき、10, 11, 12, …19と数え、次に1が2に変わり、20, 21という流れで数えていきます。

10ごとに左に数を追加したり、左の数がさらに一桁増えたりします。

このような、0〜9までの数字を組み合わせて、数を表現する考え方を十進法と言います。

なので、普段使っている数字は10進数であるということになります。

2進数ついて

0〜9まで10個の数字を使うから10進数ということはわかったと思うので、2進数について解説します。

使える数字は「0」と「1」の2つだけです。

変換のやり方は後で解説しますが、10進数(左)を2進数(右)に変換すると以下のように表されます。

  • 0:0
  • 10:1010
  • 100:1100100
  • 1000:1111101000

何やら、0と1が不気味に並んでいます・・。

まずは10進数の数が増えると、0と1も増えるくらいに考えて読み進めてみてください。

16進数について

まず、どのようなところに16進数が使われているかを説明します。

コンピュータのメモリ(一時的にデータを保存しておく場所)や、バイナリ(0と1の二進数)の省略表現に使われますが、一番わかりやすいのは、色コードと呼ばれるものです。

  • 黒:#000000
  • 白:#ffffff
  • 青:#0000ff
  • 赤:#ff0000

色を表現する方法として、#記号の後に、6桁の文字と数字が並んでいるのをみたことはないでしょうか?

ここで使われているのが16進数です。

でも、上の一覧を見て「あれ?」と思った人は鋭いです!

数字の混じって「f」という英語がありますね。

実は9の次は10になってしまうため、16字それぞれを1桁で表すために以下のように、英語が使われているのです。。。

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F

Scratch星人
Scratch星人

ここまで長々と説明しましたが、絶対に覚えなければいけないというわけではないので、サクッと読んで、なんとなくイメージがつかめたら、次に進んでくださいね!

2進数の求め方(10進数から2進数に変換)

先ほど、10という数字を2進数に変換すると1010になる、と記載しました。

考え方はそこまで難しくないので、以下を見てください。

  • 10 ÷ 2 = 5 あまり 0
  • 5 ÷ 2 = 2 あまり 1
  • 2 ÷ 2 = 1 あまり 0
  • 1 ÷ 2 = 0 あまり 1

このような計算を答えが0になるまで続けます。

あまりに注目してください。上から0, 1, 0, 1となっています。

逆にしてみると・・・「1010」
これで2進数に変換できるんです。

16進数についても考え方は同じですので割る数を16にして計算してみてください。

例えば「あまりが3だったら2に変換」され、「あまりが14だったらEに変換」されます。

スクラッチで変換ツールを作成してみよう

Screenshot

完成イメージは上のような感じです。

10進数の数字を入力してから、それぞれのボタンを押すと、2進数や16進数に変換してくれます。

次にスプライトそれぞれのコードを見ていきましょう。

背景のコード

Screenshot

16進数のあまりを変換するための一覧です。

背景に限らず、どこに作成しても問題はありません。

ネコのコード

Screenshot

リストや変数を初期化し、数字の入力を受け取ります。

  • リスト
    • 2進数:あまりを格納する
    • 16進数:あまりを一覧(HEXリスト)で変換してから格納する
  • 変数
    • カウント:リストから取り出すときに使用
    • 数字:入力された数字
    • 結果_2進数・結果_16進数:最終的に変換された進数

2進数ボタンのコード

Screenshot

特に難しいことはしていませんが、リスト(2進数)の1番目に挿入することで、数字を逆から取り出す必要がないように調整しています。

16進数ボタンのコード

Screenshot

2進数とほとんど同じ内容ですが、HEXリストであまりを変換しています。

まとめ

10進数を2進数や16進数に変換するツールを作成しました。

内容的には難しく感じてしまったかもしれませんが、もし、プログラミングを使ったお仕事をしたいと思っているような場合は、2進数や16進数の知識は必須と言っていいかもしれませんので、この機会にぜひ理解してみてください。

さらに興味がある人は、8進数やBase64(64進数)、36進数について学んでみるのも面白いかもしれません。

実は今回の作品では、様々なことが学べます。

変数操作、繰り返し、条件分岐、リストの使い方、文字列操作、と言ったプログラミングの基本などです。

しかし、今回最も重要なのは、前半で記載した内容をプログラムで作る、「アルゴリズム思考」に触れたことです。

頭でイメージできていても、それをプログラムで作成することは、なかなか難易度が高いです。

思うように動かないと投げ出したくなってしまうかもしれません。

しかし、プログラミングの上達は、そのひとつひとつを乗り越えることでしか身につかないと思います。

この記事を読んでくれているあなたは、きっと目標を持ってプログラミングに取り組んでいると思います。

これからも楽しみ、苦しみながら学んでいってくださいね( ◠‿◠ )

コメント

タイトルとURLをコピーしました