2ntブログ

16進数とは?

16進数とは、16で1桁増える数字の表記の仕方です。
私たちが普段つかっている数の数え方は、10進数です。
現在世界共通で使われている数字は0~9までの10種類しかありませんので、16進数で10~15までの数値を表すときは、英語のアルファベットを使います。
つまり10=A 11=Bという具合に。
だからコンピュータのプログラムとかメモリの中とか覗くと、1AとかFEとか数字に混じって英字が入っているのです。

コンピュータのメモリ・HDDなど記憶装置の容量を表す○バイトという単位ですが、1バイトは16進数2桁の数値が保管できる大きさです。
このようにコンピュータの世界では16進数が全ての基本になっています。

ではなぜ馴染み深い10進数ではなく、16進数をコンピュータの世界では使うのでしょうか?

ご存知のようにコンピュータというのは、もともと2進数しか理解できません。
それは昔のCPUでも今のCPUでも同じです。
デジタルというデータの記憶形式も2進数です。
コンピュータが10進数でなく、2進数を基本として動作するよう設計されているのは、それが一番エラーが起きないからです。
正確性が求められるコンピュータでは、気温や湿度、電圧・電流、部品間をつなぐ線やケーブルなどの長さや抵抗などの要因によって、2が4になってしまったり、5が1になってしまったりしたら困るわけです。
2進数であれば0か1かしかありません。
電気が流れたか流れてないか、スイッチがONかOFFか、白か黒か、その2通りしかないので、ほとんど間違いようがないのです。

だからコンピュータは2進数しか認識できないように作られているのです。

しかし2進数しか扱えないとなると、0か1かの2種類の数値しか扱えないくて困りますよね?
そこで桁数を増やして、1つの数値データとして扱う事にしました。
2進数の桁は「ビット」という言葉で表されます。

今のパソコンなどの基礎仕様が固まったのは、8ビットの時代です。
8ビット=8桁の2進数で表せる数値は0~255までの256種類です。
10進数でこれを表記しようとすると3桁分の表示枠を用意しなければなりません。
かといって9より上の数字を1文字を表そうとすると、既存の文字では足りません。
英語のアルファベットを大文字・小文字すべて使っても26×2で52文字しかありません。
とてもじゃないけど足りないし、そもそも人間が10以降255までの数値を表す新しい文字を覚え切れません。
そこで10~15までの数値をA~Fで表す比較的覚えやすい形式の16進数が表記方法として採用されたのです。
16進数であれば1バイトは00~FFまでの2桁で全て表す事ができます。
現在は64ビットCPUが主流ですが、未だに1バイトが8ビット分のデータしか保管できない仕様のままなのはこのためです。

外的な影響を受けにくい2進数でデータを扱い、表記する時は人間が見ても理解しやすい16進数を使う。
これが現代のコンピュータの基本的な仕様なのです。

よって、少なくともプログラマを名乗るなら、この概念は理解しておかなければなりません。
プログラマでなくとも、たとえば企業向けのシステムを構築するために、必要なサーバや記憶装置を用意するような仕事をしている人も、1バイト=0~255までしか記憶できない事を知っていないと、必要なメモリやハードディスクを見積もれません。
文字などは1文字2バイト(英語なら1バイトで済みますが)で計算は簡単ですが、数値データの場合、たとえば人の年齢や生年月日や入社日や、そういったものの保管には何バイト必要なのか?はそれが255までの数値で収まるものなんか、そうじゃないのかによって1バイトなのかそれ以上のバイト数が必要なのか計算しなければなりません。

ちなみに人の年齢は常識的に考えれば1人あたり1バイトで済みます。
人間の寿命なんてどんなにがんばっても100何歳までです。
256歳以上生きる人がいれば、2バイト分枠を取らなければなりませんが、そんな人いませんからねw

こんな具合です。
要は10進数で255以内に収まるデータなのか256以上のデータなのかは最低限、それによって仕様が大幅に変わる事をとりあえず知っていればおkです。

コメントの投稿

非公開コメント

カウンタ
プロフィール

ウホッ!いい男

Author:ウホッ!いい男
異世界転生を待ち続ける中高年のおっさん

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR