なぜ8進数と16進数ですか?コンピューターは2進数と人間の10進数を使用します


16

なぜバイナリ(コンピュータ用)でも小数(人間用)でもない他のベースを使用するのはなぜですか?

コンピュータは最終的にそれらをバイナリで表現することになり、人間は彼らの10進表現を取得することを強く好みます。なぜこれら2つの基盤に固執しないのですか?


数字に16進数などのグリフを大量に使用する明確な理由はないと考えがちです。さらに、将来的には、一般的なケースでは、バイナリrepが他の表記法に取って代わることができると考えがちです。
ミハイルV

@MikhailV 16進表現は、バイナリ表現よりも簡潔です。私は言う、よりグリフの大きな数を使用するためにはかなり固体理由、2だと言うだろう
ベン・ジョーンズ

回答:


19

8進数(8進数)と16進数(16進数)は、ほとんどの人が使用する2進数(2進数)システムコンピューターと10進数(10進数)システムの間の妥協案です。

コンピューターは複数のシンボルが苦手なので、ベース2(シンボルが2つしかない場合)が適していますが、長い文字列(数字の多い数字)は問題になりません。人間は複数のシンボルで非常に優れていますが、長い文字列を覚えるのにはあまり適していません。

8進数と16進数は、多くのシンボルを処理できるという人間の利点を活用しますが、すべての16進数は4桁の2進数()を表し、すべての8進数は3(8 =を表すため、2 3)。16進数は8進数よりも勝ると思います。これは、16進数がバイトおよび16/32/64ビット数を表すために簡単に使用できるためです。16=248=23


8
例として、RGBの16進値を考えます。白は#FFFFFFであることを覚えているのは簡単です。白が10進数で16777215であることを覚えるのは困難です。#EF439Aの赤いコンポーネントを削除しますか?#00439Aを取得します。つまり、最初の2桁を0に変更するだけです。10進数では、15663104を減算する必要があります。それを覚えておいてください。
jmite

3
正確には、10進表記の色はトリプルを使用し、白は(255、255、255)になります。16進値は常に2桁であるという理由だけで連結されます。私たちは、0を使用して小数と同じことを行うことができ、その後、白は255255255の代わり16777215だろう
スパイダーマン

@Spideyまさに。さらに、私の脳は(127,255,255)のようなものをはるかに簡単に解析でき、インク量の割合を見ることができ、頭の中で16進数で計算する必要がないため、色がどのように見えるかさえ推測できます。
ミハイルV

13

利便性と簡潔さのためにそれらを使用します。

HexおよびOctは、バイナリの非常に優れた圧縮表現です。特に16進数は、メモリアドレスの圧縮形式に適しています。すべての8進数は3バイナリビットに、すべての16進数は4バイナリビットに直接マップされます。これは、基数(8および16)が2の累乗(および2 4)であるためです。たとえば、バイナリ01101001を16進数69として書き込むか、10 進数151として先頭にゼロを付けて拡張する場合。23240110100169151

したがって、64ビットのメモリアドレスが必要だとしましょう。64のすべてのバイナリビットを調べるか、16桁の16進数に圧縮することができます。多くの場合、いくつかのアドレスを比較して、それらが同じか連続しているかどうかを確認する必要はありません。あなたはむしろ64ビットまたは16桁を見ますか?


5
Octalには数字記号を追加しないという利点があり、6ビット文字(および12ビットPDP-8、18ビットPDPなどの一般的な2のべき乗の単語の時代にはより実用的だったかもしれません。 1 [CDC 6x00のアドレスレジスタ]、CDC 6x00の36ビットPDP-6、60ビットオペランドレジスタ)。オクテット文字/バイトと2のべき乗ワードへの移行により、16進数がより魅力的になります。
ポールA.クレイトン14年

「64ビットまたは16桁を見る方がいいですか?」確かにグループ化されたビットを見ます。しかし、「01」表記法ではないので、これはくて目を痛めます。そして、どのくらいのヘックスが私の目を傷つけるかさえ、私はわかりません。
ミハイルV

@MikhailV:「「01」表記」とはどういう意味ですか?「01」表記法ではなく、ビットを見る方がいいと言います。その場合、どの表記法を使用しますか。あなたがヘックスがあなたの目を傷つけると言うならば、私はあなたがヘックスよりも十進法でもう少し練習したかもしれないと考えることを避けられません。(実際には、あなたの目に悪いと言われているのは(単独の)セックスだと思っていましたが、それは別の話です。)
PJTraill

使いやすさを重視しているため、dtechの現在より人気のある答えよりもこれを好みますが、16進数または8進数。
PJTraill

@ PaulA.Clayton:良い点; PDP-11のもう1つの利点は、ワード(自然な操作単位)が16ビットであったにもかかわらず、ほとんどの命令コードが自然に2ビット操作とレジスタ番号とアドレスモードを表す4つの3ビットグループに分類されることでした。 2つの引数の8つの可能性。私のお気に入り:014747 = MOV-(PC)、-​​(PC)。これはメモリをそれ自体で満たします(許可されている場合)。
PJTraill


2

前書き

他の回答で既に述べたように、さまざまな目的や制約に応じてさまざまな表記法があります。表記法は実際には文字のシーケンスとしてのエンコードであり、アルゴリズムとデータ構造の研究から、抽象概念、リスト、またはセットをエンコードする方法はたくさんあることがわかっています。 。この場合、ほとんどがアルゴリズム上の利便性です。

数値の表現を検討する場合、同じことが当てはまります。コンピュータの内部では、すべてが最低レベルでバイナリですが、一部のアプリケーションでは見知らぬ表現が使用される場合があります。

コンピューターの外部では、表現される価値の種類に関する人間の利便性に応じて、人間が理解できるあらゆる表現を使用します。多くの場合、バイナリ表現は長すぎて構造化されていないため、簡単に読み書きできないため、16進数または8進数に置き換えられます。多くの場合、選択は、情報をバイナリワードで構造化する方法に関係する場合がありますが、これは必ずしも数値を表すことを意図したものではありません。

しかし、数字、つまり数字の表現のみを検討する場合、他の数字表現システムを調べて、生理学、習慣、利便性という主要な要因を理解する価値 があります。利便性はもちろん、使用状況に依存するため、多様性を生み出す主要な要因です。

より広い外観

2n

質問の本文は決してコンピューターに限定されていないように思われ、人間は他のいくつかの数え上げシステムを使用してきました。それらの一部は、たとえば長整数(非整数の数字は言うまでもありません)を扱う場合など、コンピューター内でも使用されます。

最初の発言は、人々が単位として数千または数百万を数えるとき、これらは10の累乗であるため、依然として10進数と見なされるということです。考えられる理由の1つは、数字を表すために使用されるシンボルの数かもしれません(ただし、他のシステムで見られるように、これは議論の余地のある問題です)。

次に、人間に関しては、5 進システムと呼ばれるベース5のいくつかのシステムを使用し ます。実際、これらのシステムのほとんどは2つのベースであり、2番目のベースは2または4で、ベース5と交互になっています。それがどこから来たのか推測してください:)

これらのダブルベースのシステムが呼び出され、二五元または四五元のシステム。純粋なキナリーはほとんど使用されません。

ローマ数字は、2進法のシステムと見なされる場合があります(これは、それらを使用して算術を行う方法の指標です)。中国と日本のそろばんはバイキナリを使用します。Quadri-quinaryはMayaで使用されました。

システムを使用する理由はおそらくたくさんあります。一つの正当な理由は、それが最初のローカルデザインであり、人々が今ではそれに慣れているということです。たとえば、英語圏の人々が距離を測定しようとするとき、なぜ非常に奇妙な計算システムを使用しているのかと疑問に思うかもしれません。番号付けではなく、複数の単位の問題であると主張することができますが、それは非常に弱い発言です。数値は主に物事を測定するために使用されます。

システムを維持する他の理由は、特定のコンテキストでの利便性です。異なる記号の数、またはそろばん上の位置と、十分に大きな数を形成するために必要な記号の出現回数との間にはトレードオフがあります。Base 2は2つの異なるシンボルで動作しますが、多くの出現があり、マテリアル表現には不便かもしれません。Vigesimal base 20には20個のシンボルと、人々が覚えていないような非常に大きな乗算テーブルが必要です。しかし、バイキナリまたはクアドリキナリのシステムは、特にそろばんを作成するために、はるかに管理しやすいです。純粋な五次系はおそらくもっと良いでしょうが、それは生理学に基づいた習慣と直感に反します。そして、何もよくわからないときは、指を使って数えることができるのはいつでもいいことです。

しかし、それだけではありません。

非常に古く、非常に一般的なシステムの1つは、時間と角度を測定するために使用される六十進法システムです(ただし、地球の自転によってそれらが関連していることはわかっています)。ベース60を使用しますが、60個のシンボルはあまりにも多すぎるため使用しません。そのため、シンボリックを表すために別のシステム(10進システムなど)に依存します。

円は、60度の角度に対応する6つの部分に分割できます。これは、正三角形で最も簡単に構築できます。その後、各学位は60分の弧で、それぞれ60秒に分割されます。

ウィキペディアによると

紀元前3千年紀の古代シュメール人が起源で、古代バビロニア人に受け継がれ、現在でも時間、角度、地理座標の測定に(変更された形式で)使用されています。

起源を考えると、数学がまだ幼児期に入っていなかった頃は、かなり便利なシステムでした。60°の角度は描画しやすいだけでなく、60には多くの要素があるため、余りなく整数で多くの方法で分割することができます。

12×5=60

しかし、バビロニア人の内臓三元系など、60に到達する他の方法があります。

なぜ我々はまだ六十進法を使用するのですか?私たちはそれに慣れているだけで、変更を完全に正当化するには相反する問題が多すぎるかもしれません。

ナンバリングシステムとユニットシステムの間には多くの相互作用があることに注意してください。しかし、測定は数値の主​​要な役割であるため、これは予想されることです。これは、メモリサイズの10進数と2進数のメトリックの対立で顕著です。


3
タイトルに「なぜ16進、8進、16進?」と書かれているからかもしれません
フィズ

1
@RespawnedFluff良い発言。それから私の質問は質問にまで及ぶかもしれません。私は他の答えが面白くないと言うつもりはありませんでした。しかし、より広い視野は、さまざまなシステムの可能性のある動機をよりよく示しています。すでに与えられたいくつかの答えをサポートします。基本的に動機は習慣と便利さです。しかし、利便性はコンテキストに大きく依存します。メモリサイズの二分法は最近作成されたものであり、ポイントを示しています。
-babou

2
簡潔さは美徳であり、この質問は1000ワードの散文を必要とせず、そのほとんどは非常に関連性がありません。また、質問に答えられませんでした。
dtech

「人々が数千を数えるとき、これらは10の累乗であるため、これは10進数と見なされます。したがって、8進数または16進数をバイナリの単なるバリエーションと見なしてはならないのはなぜでしょうか」通常は0の数字。これは、0から999までの数字ごとに1000個の異なるシンボルを使用するbase-1000とは異なります。
dtech

1
@dtechありがとうございます。私はいつも答えの前にある紹介や要約を忘れていました。そして、これは私が他の答えによって明らかに無視された重要なポイントに私を導いた。すべてのバイナリワードが数字として意図されているわけではありません。より広い視野を得ようとすることが問題の発見に役立ちます。
babou

-1

コンピューターは2進数を理解し、2進数で、数値の重みは2の累乗であるため、数値によっては数値を表す桁数が大きくなる場合があります。

たとえば、10進数で64は7ビットで表すことができますが、5000を表すには13ビットが必要です。

8進数および16進数は、2進数を表すコンパクトな方法です。


2
これは[What advantage is there to using a base different from ten or (a power of) two?]どのように答えますか、または他にどのように解釈しWhy not stick to [bases 2 and 10]?ますか?
greybeard
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.