こんにちは。このコースでは基本情報技術者試験の基礎理論コースを学習していきます。 私たちの生活であまり馴染みない内容なので少し難しく感じるかもしれませんが、 コンピューターの処理を理解する上で非常に大切で、テストの出題率も高いので頑張って身につけていきましょう。 本日はN進数の概念を勉強していきます。 それでは早速内容を見ていきましょう。 まず、いきなりN進数を学べと言われても、なんでそんなことを学ばなきゃいけないんだと思うかもしれませんが、 実はコンピューターは2進数で処理を行っているので、今後の分野を学習するために、まず2進数を知らなくてはいけないんです。 コンピューターが2進数で処理を行うとはどういう意味なのか、簡単に説明していきます。 そもそもコンピューターとは電気回路なので、電気がONの状態、電気がOFFの状態という2つの情報しか理解することができません。 そのため、このON、OFFという2つの情報だけで処理を行っていくんです。 そんなことを言うといやいや2つの情報だけでメールを送ったりすることはできないだろうと思うかもしれませんが この2つの情報を大量に組み合わせそれを高速で処理していくことで処理が可能になるんです 例えば電球を3つ集めた時を考えてみてください 電球一つではON、OFFという2つの情報しか表現できませんが 3つ組み合わせると全ての電球がON、最初の2つだけがON 最初と最後だけがON、最初だけがON またその逆パターンと合計8通りの表現が可能です さらにこれを4つ集めたら16通り、5つ集めたら32通りと 電球を増やせばその分表現できる数も倍々に増えていきます これと同じでコンピューターでも2つの情報を大量に組み合わせることで 無限の情報を表現できるのでそれを高速で処理して命令を実行していくんです この時電気がONの場合を1、OFFの場合を0と数字に置き換えてみると コンピューターは0と1という2つの数字を用いて処理を行っていると言えます 二進数とは後ほど説明しますが1と0だけで数値を表現することなので実はコンピューターの処理は二進数そのものなんです ちなみにこの1か0のどちらかが入る箱のようなものをコンピューターが扱う最小の単位としてビットと呼びます 箱と言われてもいまいちピンとこないかもしれませんが勉強を進めていくうちにイメージが湧くと思うので一旦はそんなものなのかと思ってください またこのビットを8個集めたものをバイトと呼びます どちらも今後よく出てくる単位なので知っておいてください ではコンピューターが二進数で処理を行っていることをよりイメージしてもらうため 例として文字の表現を見ていきます 0と1だけでどのように文字を表現するのかというと 文字のそれぞれに0と1で表現された識別番号が割り振られており この番号でコンピューターは文字を表現します この識別番号のことを文字コードと呼びます。 例えば、Shift-Discordという文字コードでは、 Aという文字に画面に見せた文字コードを割り振っています。 ちなみにこの文字コードは、0か1のどちらかが入る箱を16個使って表現しているので16ビットです。 もしくは8ビットが1バイトなので、16ビットは2バイトと言い換えることもできます。 またこの文字コードはシフト、ジスコード以外にもいくつか種類があって 代表的なものだと他にもユニコードというものがあります ユニコードの場合はAという文字を今見せたような24ビットもしくは3バイトで表現します このように同じ文字でも文字コードによって識別番号が異なっていることがわかりますね つまりユニコードで表現された文字をShift-Discコードで表現しようとすると うまく文字が表現することができません 補足ですがこのように作成者が使用したコードと異なる文字コードを当てはめると 文字を表現することができず文字化けという現象が起こってしまいます さてここまででコンピューターは2進数で処理を行っていることを理解いただけたと思うので ここからはN進数の学習に移ります N進数とはN個の記号を用いて数字を表現することです 例えば私たちは普段0から9という10個の記号を用いて数字を表現しているので 言い換えると10進数で数値を表現していると言えます 私たちの世界では10進数を用いていますが コンピューターの世界では先ほど紹介した2進数や その他8進数、16進数などが使われます 2進数は0と1という2つの記号を用いて数値を表現することで まさに先ほど説明したコンピューターの処理そのものです 16進数の場合も同様に16個の記号で数値を表現しますが 0から9だと記号が足りないので さらにAからFというアルファベットを用いて合計16個の記号で数を表現します そしてN進数は数値がN個集まると繰り上がります この繰り上がりを活用して数値を表現していきます 例えば10進数で数を表現するときを考えてみましょう 10進数では各桁に1から9の数字を入れるための9個の箱が用意されており 1の位だけでは1から9までしか表現できません 10以上の数値を表現する際は当然言うまでもなく繰り上がりを行い 10個集めた数値を10の位に入れていきます この時10の位の中の一つの箱は10という塊のことであり 10の位の数値は10という塊が何個入っているかを表現していることになりますね また1の位と10の位がいっぱいになると今度はさらに桁が繰り上がって100の位の箱を使い それもいっぱいになると今度は1000の位の箱を使うといった具合でどんどん桁が増えていきます この当たり前の繰り上がりの話ですが、実はn進数で数を表現する際は、この繰り上げる数値が異なるだけで考え方は全く同じなんです。 では次に2進数で考えてみましょう。 2進数では0か1しか表現できないので、各桁に箱は1個しかありません。 最初の箱に1を入れると、もう最初の箱がいっぱいになってしまいますので、2を表現したい場合は次の桁へ繰り上がります。 この時2つ目の桁には2の塊が入っているということになります そして再度最初の箱に1を入れると今度は3が表現できますが もう箱がいっぱいになってしまうので4を表現するにはさらに3つ目の桁に繰り上がります この時3つ目の箱は4の塊ということになります 5を表現するときはこの3つ目の桁に加えて最初の箱に1を入れます 6を表現するときは2つ目の箱に1を入れます 7を表現するときは全ての箱に1を入れます そして8を表現するときは今度は4つ目の桁へ繰り上がりをします この時の4桁目は8の塊ということです このように2進数では2個集まると桁が上がっていき この繰り上がりによって数値を表現していきます 16進数も同様の考え方です では練習として画面に出されたリンゴの数を 2進数、10進数、16進数で表現してみましょう 10進数の場合は言うまでもなく10の塊が1つ1の塊が7個で表現できるので17となります 2進数の場合1桁目は1の塊2桁目は2の塊3桁目は4の塊と桁が増えるにつれて倍になっているので 5桁目は16の塊となります よって2進数の5桁目と1桁目に1それ以外を0にすると 16の塊と1の塊が1つずつあることになりリンゴの数を表現できます よって2進数では10001となります 16進数で同様の考え方をすると最初の桁は1の塊 16個集まると次の桁へ繰り上がりますので次の桁は16の塊となります よって1つ目と2つ目の桁にそれぞれ1を入れると16の塊と1の塊が1つずつあることになりリンゴの数を表現できます よって16進数では11となります ただしこれだけだとこの数字が何進数で表現されているのかわからないので右下に小さくn進数のnを括弧で記載して表現します なお注意点としてこれらは表現方法が異なるだけで すべてリンゴの数を表現しているという点は同じです 例えば1時間も60分も3600秒も表現方法こそ違いますが すべて同じ時間を指していますよね それと全く同じことで 同じリンゴの数を別の方法で表現しているだけなので 混乱しないように注意してください では最後にN真数の奇数と重みについて説明します 先ほどから10進数では最初の桁は1の塊、次の桁は10の塊とか 2進数では1桁目は1の塊、2桁目は2の塊、3桁目は4の塊といったように 各桁の数値の塊を説明していますが 実はこの塊のことを各桁の重みと呼びます そして桁が増えるにつれて10進数では重みが10倍になっており 二進数では重みが2倍になっていることがわかります この桁の重みが増えていく基本となる数を奇数と呼びます また今回は整数部分だけしか説明していませんが 十進数の小数部分では0.1の位、0.01の位と桁が減るにつれて重みが10分の1になっています この関係性を公式に落とし込むと n 真数の奇数は n となり 各桁の重みは整数部が n の 乗 乗 乗と増えていき 小数部は n の-1 乗-2 乗-3 乗と減っていきます 指数の公式が曖昧な方もいると思うので復習しておくと n の 乗は になります どんな数字を 乗しても必ず になると思ってください またN-A乗はNのA乗分の1になります 例えば10の-2乗は10の2乗分の1、つまり100分の1なので、小数部2桁目の重みは0.01となります。 2進数の場合で考えると、2の-1乗は2分の1で0.5、2の-2乗は2の2乗分の1、つまり4分の1で0.25となります。 次回のコースでは、この奇数を変換する方法を学習しますので、本日の内容はよく理解しておいてください。 本日の動画は以上となります 皆さんお疲れ様でした このチャンネルでは基本情報技術者試験に合格するための対策講座を作成しています これから試験を受ける予定の方はチャンネル登録をしていただけると動画が探しやすいのでおすすめです また僕のモチベーションにもつながりますので動画が役に立ちましたら高評価チャンネル登録していただけると大変ありがたいです それでは本日も最後までご覧いただき本当にありがとうございました 試験合格に向けて一緒に勉強を頑張っていきましょう