なぜプログラミングは16進数なのですか? 電源オンとオフの2進数の話は理解しているのですが、なぜ16進数なのでしょうか?

プログラミング | 数学931閲覧xmlns="http://www.w3.org/2000/svg">500

ベストアンサー

NEW! この回答はいかがでしたか? リアクションしてみよう

その他の回答(11件)

>なぜなら8進数は10進数に最も近い2の乗数ですし、親指以外の指で手で数えることができますし、アルファベットを追加する必要もありません。 変換するのが大変だから。 使える命令の数が増えたからという考えもありますよ。 8進数では、2バイト文字コードの時、変換するのが大変。 情報が少なかった時は、合理的を重視していたと思います。

指摘ずみのことですが8進数がよく使われてた時期はあります。 Unixなどのodコマンドも基本8進表現ですしC言語は先頭0ではじまる数値リテラルは8進数です。 Cコンパイラを使える環境なら下記のコードをコンパイルして実行してみてください。 #include <stdio.h> int main(void) {     int i = 010;          if ( i == 8 ) {         printf("010 == 8, 010 = %d\n", i);     }else{         printf("010 != 8, 010 = %d\n", i);     }     return 0; } 8は10未満の数字で表せる2の累乗で一番大きな数値なので、メモリ内容などを確認するのに便利だった時期はあったでしょう。 「ワードマシン」のコンピュータも割と最近まで残ってましたし「1バイト=8bit」というのもIBMのS/360あたりからの影響が大きそうです。 https://qiita.com/yaju/items/c5da6df2221d5c3611e0 英数字+α格納できてパリティビットつけられるのが8bitだったというのにそれなりの説得力を感じます。 A~Fならプリントアウトできたという事情もありそう。

16進数の方がリソースを無駄にすることなく楽に表現出来るからです たとえば HTMLのカラーコードというものをご存知でしょうか? https://html-color-codes.info/japanese/ 16進数であればRed、Green、Blueをそれぞれ16進数を2つ使って16×16の256段階で表現しています RGB全てのカラーの組み合わせは256の3乗=16,777,216色です これはトゥルーカラーと呼ばれており、人間の目で区別できる限界とされています つまりトゥルーカラー領域であればほぼ全ての人間が満足いく画像を提供できます 8進数の場合で同じように使うと8×8の色64通り、その3乗だと262,144色 トゥルーカラーとは程遠い表現数になりますね 見る人によっては違和感のある色数になります じゃあ8進数を3つ使ったら良い?=>68,719,476,736色 これじゃ無駄すぎますね カラーコードの他に文字コードなどもあり、処理システムや通信システムを高速に動かすためにはできるだけ無駄なく通信する必用があるため少なくとも現時点では16進数(8ビット)での通信が最適だと思われています。

>個人的には8進数のほうがいいように思います。 じゃあ、8と9はどうやって処理するんですか? 16進数なら出来ますよ >なぜなら8進数は10進数に最も近い2の乗数ですし、 10進数に近くても8と9がなければ不便ですよ 16進数なら8と9があるので10進数に近い数字よりも、 10進数と同じことが出来る数字のほうが良いと思いますよ 16進数システムを作って0から9まで使えば良いじゃないですか まさに10進数が再現できてますよ しかし6個ほど未使用分があるので、ついでに使おうということから 16進へと進んだのです >頭のいい人たちが8進数ではなく >16進数を選んだのは、もっと合理的な理由があるはずです。 2進数から8進数へと移行し 8進数よりも16進数のほうが良いから16進数に移行したのです

昔のコンピュータ(メインフレームあるいはミニコン)は、18ビット、12ビット、24ビット、36bit等、ビット桁数が3で割り切れる機械が多かったようです。2進数だと3桁つまり、8進数で表現するとピッタリだったわけで、その当時はむしろ8進数表記が主流だったようです。 (私自身、大昔に授業でPDP-7というDECのミニコンで機械語の演習をした経験があるのですが、その当時の記憶を思い起こすと確かにアドレスや機械語命令等を8進数で打ち込むようになっていました) 一方、パソコン(あるいはワークステーション)は、8bitから始まって、16bit、32bit、64bitと3桁では割り切れず4桁で割り切れる形で進化していきました。メインフレームやミニコンの時代が終わるのにあわせて、8進数は使われることがほとんどなくなり、4桁でキリよく表現できる16進数が普通になったのでしょう。