2021年09月21日

●「16進数について知っておくこと」(第5576号)

 「ハッシュ値」は普通のPCでも算出できます。誰でも簡単に
計算できます。しかし、ハッシュ値を理解するには、16進数の
知識が必要です。少しややこしい話をしますが、別に難しくあり
ません。知っておくとトクな話です。ところで、その16進数に
ついて、こんな話があります。意味がわかるでしょうか。
─────────────────────────────
 9+1=10、19+1=20、なら、99+1=100です
よね。それでは、F+1=10、1F+1=20となる。では、
FF+1はいくつか。
─────────────────────────────
 ふつうはこれを聞いたら「キョトン」としてしまう人が多いと
思います。残念ながら、その人は16進数はわかっていません。
答えを先にいうと、「FF+1」は「100」です。どうしてそ
うなるかについて説明します。
─────────────────────────────
    10進数              16進数
   0   8   O   8   10   18
   1   9   1   9   11   19
   2  10   2   A   12   1A
   3  11   3   B   13   1B
   4  12   4   C   14   1C
   5  13   5   D   15   1D
   6  14   6   E   16   1E
   7  15   7   F   17   1F
─────────────────────────────
 数字というのは、0から9までの10個しかありません。後は
組み合わせです。最初に10進数の場合を考えます。10で桁上
がりするので、われわれは、11(じゅういち)、12(じゅう
に)、13(じゅうさん)・・・と数えますね。そうしないで、
左側の数字はすべて1、右側の数字は、0、1、2、3、4、5
6、7、8、9と考えるのです。
 16進数は、16で桁上がりするのですが、数字は0〜9しか
ないので、A、B、C、D、E、Fまでの6個のアルファベット
を数値として扱います。ここまでは誰でも知っていることです。
 問題は、10進数で16以降がどうなるかです。左側の数字と
右側の数字を分けて考えます。左側は、すべて1です。右側は、
0、1、2、3、4、5、6、7、8、9、A、B、C、D、E
Fとなります。
 それでは、次の桁上りがどうなるかです。これは簡単です。左
側の数字は、すべて2です。右側は、O〜Fとなります。ここま
で理解できれば、冒頭の問題は解けますね。
 「F+1=10」のFは10進数なら「15」、プラス1で桁
が上がるので、左の数字は「1」、右の数字は「0」です。10
進数の「10」と考えるとわからなくなります。
 「1F+1=20」の1Fは2つ目の桁上りになるので、左側
の数字は「2」、右の数字は「0」です。したがって、「20」
になります。
 最後の「FF+1」は何でしょうか。
 FFというのはF=16ですから、16×16=256、10
進数の256、2進数の「11111111」になります。「F
F+1」は桁上りを意味しますから、「100」になります。そ
れ以降は、どうなるかについては次のようになります。
─────────────────────────────
100、101、102・・109、10A、10B・・10F
110、111、112・・119、11A、11B・・11F
120、・・・・・
 ・・・
 ・・・
190、191、192・・199、19A、19B・・19F
1A0、1A1・・・・
─────────────────────────────
 小学校の算数でやったはずです。鉛筆の本数を数えるのに、1
本ずつ、10本の束、100本の束と考えて、例えば「123」
は100本の束1つと、10本の束2つ、1本ずつが3つとやっ
たはずです。
 16進数では、16本の束、256本(16×16)の束を使
って数えます。例えば、「A0」は、16本の束10束と1本ず
つは0ということになります。
 ITの技術を理解するには、高等数学は不要です。しかし、算
数の知識は不可欠です。ところが、最近の大学生は、理工系も含
めて、算数に弱い人が多い傾向があります。なかには、割り算も
満足にできない人もいるので深刻です。どうしても計算にはスマ
ホの電卓を使ってしまうので、計算が弱くなっているのです。
 それでは16進数は何のために存在しているのでしょうか。
 16進数は、15までを1桁で表すことができるので、人から
見ると、長い2進数を短く表現することができます。これは、人
間にとって大きなメリットです。しかし、欠点もあります。人間
にとってわかりにくいからです。
 それに加えて、2進数の4桁を1桁で表すなど、コンピュータ
から見ると、2進数に変換しやすい特性を持っています。だから
プログラミングでもよく使われます。つまり、10進数よりも、
16進数の方がコンピュータにとって相性が良いのです。つまり
16進数は、人間とコンピュータの両方にとって、わかりやすい
表記法であるといえます。
 16進数のメカニズムというか構造──冒頭のような問題がす
ばやく解ける人は、IT技術を早く修得できる人であるといえま
す。逆にいうと、IT技術を修得するには、16進数を理解する
ことが大切です。そんなに難しいことは書いていないので、この
機会に知識に加えてください。きっと役に立ちます。
             ──[デジタル社会論V/030]

≪画像および関連情報≫
 ●コンピュータの世界は2進数と16進数で成り立ってます
  ───────────────────────────
  こんにちわ。
   あたりまですが、コンピュータはデジタル機器です。なの
  で、コンピューターの世界では数字は2進数や16進数で表
  現されることが多いです。今回はそんな2進数や16進数の
  話です。
   2進数(二進法)ですが、英語では binary といいます。
  カタカナで書くと「バイナリー」ですね。よく、コンピュー
  ターの世界では「バイナリーデータ」という言葉が出てきま
  す。コンピューターが理解できるデジタルなデータ群のこと
  を「バイナリーデータ」と言います。
   2進数の世界ではオンとオフしかないので、使われる記号
  も1と0しかありません。信号があるかないのか。。。って
  ことです。単純な表現方法なんですが、複雑なデータを表そ
  うと思うと大量の数字の羅列になってしまいます。人間がそ
  れを理解しようと思うと大変なことになりますが、もともと
  コンピュータは単純な情報を高速に処理するために生まれて
  きた技術ですし、あいまいな情報を処理するのは逆に苦手。
  なので、2進数のような何かを表そうとすると大量のデータ
  になるけれど、基本が単純なものの方がコンピュータは扱い
  やすいんですよね。なので、10〜15までの記号としてア
  ルファベットの「A,B,C,D,E,F」を割り当てて1
  ケタで表すことができるようにしたのが16進数です。
                  https://bit.ly/3CuuuAG
  ───────────────────────────
10進数と16進数.jpg
10進数と16進数
posted by 平野 浩 at 00:00| Comment(0) | デジタル社会論V | このブログの読者になる | 更新情報をチェックする