n進数とは

基本情報技術者試験, FE 基本情報技術者試験
基本情報技術者試験
スポンサーリンク

n進数とは

n進数とは、任意の基数(n)を使って数値を表現する方法です。

私たちが普段使っている10進数は、基数が10で「0」から「9」までの10個の数字を使用しますが、n進数では基数がnになり、異なる桁の数値が使われます。

n進数の数値の表現方法

n進数では、数値を基数nで表し、各桁に「0」から「n-1」までの数値が入ります。

さらに、各桁の位置に応じて重みが決まります。

10進数での「123」は「1×10^2 + 2×10^1 + 3×10^0」と表現されます。

これをn進数で表す場合、基数が変わるだけで基本的な考え方は同じです。

例:17を2進数、10進数、16進数で表現

  • 10進数: 17はそのまま「17」として表されます。
  • 2進数: 17を2進数で表すと、「10001」になります。
    • 計算過程:
      • 17 ÷ 2 = 8 … 1
      • 8 ÷ 2 = 4 … 0
      • 4 ÷ 2 = 2 … 0
      • 2 ÷ 2 = 1 … 0
      • 1 ÷ 2 = 0 … 1
        → 上から順に並べると、「10001」になります。
  • 16進数: 17を16進数で表すと、「11」になります。
    • 計算過程:
      • 17 ÷ 16 = 1 … 1
        → 16進数では、余りが「1」で、商も「1」なので「11」です。

n進数の基数と重み(整数部と小数部)

n進数での数値表現には、整数部小数部が存在します。

どちらも「基数n」を使って表現されますが、整数部はnの正の累乗、小数部はnの負の累乗で表されます。

  • 整数部: 整数部では、各桁が「n^0、n^1、n^2…」というように、右から左に向かって基数の正の累乗として表現されます。
    例えば、10進数の「123」は、「1×10^2 + 2×10^1 + 3×10^0」となりますが、2進数では「10001」が「1×2^4 + 0×2^3 + 0×2^2 + 0×2^1 + 1×2^0」となります。
  • 小数部: 小数部の場合、各桁の重みはnの負の累乗となります。例えば、2進数の「0.101」は「1×2^-1 + 0×2^-2 + 1×2^-3」となり、10進数に直すと「0.625」となります。小数部は、桁が右に行くほど小さな値を表します。

【具体例】

  • 整数部:10進数の17は、2進数で「10001」です。
    → 「1×2^4 + 0×2^3 + 0×2^2 + 0×2^1 + 1×2^0」 = 16 + 1 = 17。
  • 小数部:もし10進数で「17.625」という数値を2進数にすると、「10001.101」となります。
    → 整数部「10001」は17、小数部「.101」は「0.625」を表し、合わせると「17.625」となります。

n進数がコンピューターに必要な理由

n進数、特に2進数はコンピューターの基礎です。コンピューターは、電気信号のオン・オフを使ってデータを処理します。このオン・オフの2つの状態を表現するのに、2進数は最も適した形式です。

「オン(1)」か「オフ(0)」という状態が、コンピューターのメモリやプロセッサの中で基本的な操作の単位として扱われます。


n進数のイメージ

2進数の概念を理解するために、電球の「オン・オフ」で考えてみましょう。

電球が「オン」のときは「1」、「オフ」のときは「0」となります。

例えば、電球が4つ並んでいる場合、それぞれの電球がオンかオフかの組み合わせによって、16通り(2^4)の状態が表現できます。

これが、2進数の桁数によって多くの情報を表現できる仕組みです。


ビット、バイトとは

2進数(0,1)の入れ物

  • ビット:ビット(bit)は、コンピューターで扱う情報の最小単位で、「0」か「1」のどちらかの状態を表します。
    ビットは、電気のオン・オフ(1と0)の状態を直接表現するため、データ処理に不可欠です。
  • バイト:1バイト(byte)は通常8ビットで構成され、256通りの異なる値を表現できます。
    これにより、アルファベットや数字、記号などの文字データを含む様々なデータを表現できるようになります。

例:文字の表現方法

識別番号=文字コード

コンピューターでは、文字を扱う際に、それぞれの文字に対応する識別番号、つまり文字コードを使います。

例えば、ASCIIコードでは「A」は「65」に対応しています。

この数値がビットの並びに変換され、コンピューター内部で処理されます。

種類:シフトJISコード、Unicode

文字コードには多くの種類がありますが、よく使われるものには以下の2つがあります。

  • シフトJISコード:日本語を含む多くの文字を表現するために使われる文字コードです。2バイトで漢字やカタカナを表現します。
  • Unicode:世界中の文字を統一して扱うための標準化された文字コードです。UTF-8やUTF-16など、異なるバイト数で文字を表現できる形式があります。

文字化けが起こる理由

文字化けは、異なる文字コードでデータが処理されるときに起こります。

たとえば、シフトJISでエンコードされたテキストを、Unicodeでデコードしようとすると、対応する文字が正しく表示されず、意味不明な記号や文字に置き換わってしまうことがあります。


これで、n進数と関連する概念について、より詳しく説明できたかと思います。もし他に知りたいことがあれば教えてください!

コメント