ふと気になったんですよ。
2進数と16進数ってよく使うけど、8進数ってあんま使わない。
しかも何で使ってるのかよくわからない進数。

そんないらない子となりかけてる8進数について色々調べてみた。

えっと、昨日メッセで色々聞かれた方すごい申し訳ない。
気になったままじゃ眠れないので(ぁ

まず最初に8進数とは何ぞやってとこですね。

日常で使うのは10進数、つまり0~9の10個の数字を使って数値を表わしてますけど、
8進数は0~7の8個の数字を使って数値を表わす方法のことですね。

ちなみに例をあげてみましょう
左が10進表記、右が8進表記です。

0→0 1→1
2→2 3→3
4→4 5→5
6→6 7→7
8→10 9→11

こんな感じかな。
8進は0~7でしか数をカウントできないので、8で桁が上がります。
ちなみに8進で8や9を見ることはないです。

ただ、このままだと8進で表記したのか、10進で表記したのか、分からなくなるので
数学の世界とかだと()10とか()8、カッコつきで、
最後に小さい数字書いてそれが何進かってのを定義してるのかな。

ちなみにプログラマ側で言っておくと先頭に0をつけたりしますね
そんな8進数です。

あ、ちなみに言っておくと今回参考にさせていただいたサイトは
知ってた?8進数のナゾ@itMedia の記事です。この記事を書いた方もこんなこといってますね。

実は、今週の社内勉強会の中でこの疑問が出て、残念ながら参加者の中にこの疑問に答えられる人がいませんでした。
そこで、Webでわかる範囲で調べてみた結果わかったのが以下のことです。

うん、やっぱそうなんだよなぁ。
平野 洋一郎さん、参考にさせていただきます!

もともと8進数がなぜ必要だったかというと昔、コンピュータの処理ビットは
3の倍数が基本だったようです。
色々参照先サイトでは例を上げていますが、つまり3ビットで単位で考える
ってのが都合よかったんですね。

ちなみに3ビットは0と1であらわされる2進数の3ケタ分。
000~111 十進数であらわすと0~7までの8つの数字

上記のような背景から考えると、0で始まる8進数は、初期メインフレームのAssemblerで使われ始めたと
考えるのが自然だと思います。
しかし、Web上の文献の範囲だと1960年代後半に開発されたB言語(C言語の親に当たる)でそれが使われていた
というところまでしか遡れませんでした。

1960年代後半にはもう使っていたのか!すごいなぁ。
ただそれ以前に人間界で使っていたところがあったようで

アメリカのカリフォルニア州のユキ語(Yuki) は指自体ではなく
指の股を数える八進法を用いていたが、現在は死語である。

超勿体ねぇ。
今度から使ってみるといいですかね、指の股で数えて報告みたいな。

ああ、だめだ、怒られる(