8進数(base 8)は何に使用されますか?


11

Javaは、基数2、8、10、16に数値リテラルを書き込む方法を提供します。

なぜbase 8が含まれているのかと思いint x = 0123;ます。

16進数で1バイトの容量がFF + 1であるという事実に似ているのではないかと考えています。


7
あなたの質問は「8進数は何に使われるのですか?」
GetMeARemoteJob

はい、それは私が質問に言葉を言うべきだった方法です。興味深い答えをすべてありがとう。歴史的根拠があるのではないかと思ったのですが、指で触れるだけの経験はありません。
jokinjo

回答:


16

この回答は、元の質問に対して書かれたものです。

それは、Cなどを知っている人に言語を親しみやすくすることでした。そして、問題は、なぜそれをそれらでサポートするのかです!

18ビット幅のワードを使用する(および他の36ビットワードを使用する)アーキテクチャ(さまざまなPDP)があったため、数字が3ビット幅のリテラルが役立ちます。

実際に、私はそれがJavaコードで使用さ見てきた唯一の場所は、例えば、UNIXスタイルの権限を指定するためである07770644など

(なぜそれがサポートされているのかについての正直な答えは、「この質問に賛成投票することです」)。


ああ、いいですね、Linuxでのファイルのアクセス許可を忘れてしまいました!使用可能なビットの最小使用... 8進数は請求書に適合します。
sarlacii

1
@sarlaciiの「最小限の使用」はそれとは何の関係もありません。intリテラルの「8進数」らしさはソースコードにのみ存在します。数字はユーザー、グループ、その他に直接対応しているので、8進リテラルで示されるアクセス許可を調べるのは簡単です。
アンディターナー

最初のプログラミングは、60ビットのワードと6ビットの文字セットを持つメインフレームコンピューターで行いました。アドレスは18ビットでした。もちろん8進数を使用しました。私が最初に16進数に出会ったとき、数字に文字が含まれているのは非常に奇妙でした。
Ole VV

@Andy私はまだそれを最小限の使用と考えています...ビット長の選択はコードに関連するだけではありません。また、リソースによっても制限されます。例えば。8ビットを使用して各権限をエンコードし、使用されていないビットをマスクして3バイトを要求するか、最小の3ビットを使用してから8進数をエンコードして、1.5バイトのみを使用することを選択する場合があります(4番目を使用)スティッキービット)。しかし、はい、ビットレベルに移動すると、任意です。とにかく、組み合わせた8進数値を16進数として読み取ることができます。
sarlacii

7

「8進数は以前ほど一般的ではありません。ただし、1ワードのビット数が3の倍数である場合、8進数が使用されます。これは、UNIXシステムでのファイルのアクセス許可を表すための略記や、 UTF8番号など」

送信元:https : //www.tutorialspoint.com/octal-number-system


3
実際には「1ワードのビット数」ではありません。これは、16ビットミニコンピューターで上位ビット0/1、次に5つの8進数の形式で使用されていたためです。より適切な説明は次のとおりです。ワード内のフィールドのサイズが8ビットの倍数である場合に使用されます。それらの同じコンピューターには(頻繁に)8個のレジスターがありました。つまり、命令で指定されたレジスターにはレジスターを指定する3ビットのフィールドがあり、レジスター間レジスター命令には2つのそのような3ビットのフィールドがあります。それらの同じコンピュータが頻繁に3ビットのオペコード、または「エスケープ」と3ビットのオペコード(例えば、0111)を有していた6ビットのオペコード。など
davidbak

4

コンピュータ(科学)の歴史。ビットの集合を表すために、ベース10は適合せず、ベース8 = 2 3は3ビット、ベース16 = 2 4は4ビットに適合します。

基数8の利点は、すべての桁が実際に数字である0〜7であるのに対して、基数16は「数字」0〜9A〜Fを持っていることです。

1バイトの8ビットの場合、16(16進数)の方が適しています。Unixベース8の8進数のrwx場合、ユーザー、グループ、その他のビット(読み取り、書き込み、実行)に使用されることがよくあります。したがって、0666や0777などの8進数です。

16進数はユビキタスであり、コンピューターのワードサイズが今日では複数バイトであるためです。8ビットbyteが標準になったということは、もう1 つの難しい関連の話です(2 3ビットとアドレス指定)。


0

「8進数(8を基数とする)は何に使用されるのですか?」の元の回答

Octalの一般的な使用法

  • バイナリの省略形:コンピューティングマシン(UNIVAC 1050、PDP-8、ICL 1900など)では、ワードサイズが3で割り切れるため、バイナリの省略形としてOctalが使用されています(各8進数は3つのバイナリを表します)。数字)。したがって、2、4、8、または12桁で、マシンワード全体を簡潔に表示できます。また、ニキシー管、7セグメントディスプレイ、および電卓をオペレーターコンソールに使用できるようにすることでコストを削減しました。バイナリディスプレイは複雑すぎて使用できず、10進ディスプレイは基数を変換するための複雑なハードウェアが必要で、16進ディスプレイはより多くの数値を表示する必要がありました。 。

  • 16、32、または62ビットのワード表現:最新のすべてのコンピューティングプラットフォームは、16ビット、32ビット、または64ビットワードを使用し、さらに8ビットバイトに分割されます。このようなシステムでは、バイトごとに3桁の8進数が必要であり、最上位の8進数は2桁の2進数を表します(次の有効バイトの1ビットがある場合は、それに加えて)。16ビットワードの8進数表現には6桁が必要ですが、最上位の8進数は1ビット(0または1)のみを(かなり厳密に)表します。この表現は、4桁の8進数で塗りつぶされているため、最上位バイトを簡単に読み取る方法を提供しません。したがって、2つの16進数字が1バイトを正確に指定するため、今日のプログラミング言語では16進法がより一般的に使用されています。2のべき乗のワードサイズを持つ一部のプラットフォームには、8進数で表示するとより簡単に理解できる命令サブワードがあります。これには、PDP-11およびMotorola 68000ファミリーが含まれます。現代のユビキタスx86アーキテクチャもこのカテゴリに属しますが、このプラットフォームで8進数が使用されることはほとんどありません。

  • エンコーディングの説明:最新のx86アーキテクチャにおけるオペコードのバイナリエンコーディングの特定のプロパティは、8進数で表示するとより容易に明らかになります。たとえば、ModRMバイトは2、3、3ビットのフィールドに分割されるため、8進数は説明に役立ちますこれらのエンコーディング。

  • 計算とファイルアクセス許可: Octalは16進数の代わりにコンピューティングで使用されることがあります。おそらく現代では、Unixシステムでのファイル許可(chmodへのアクセス許可)と組み合わせて使用​​されることが最も多いでしょう。これには、数字として余分な記号を必要としないという利点があります(16進法は16進数なので、0〜9以外に6つの記号が必要です)。

  • デジタルディスプレイ: 8進数は、表現に使用されるシンボルの数が少ないため、デジタルコンテンツを画面に表示する際にも使用されます。

  • バイト文字列のグラフィック表現:一部のプログラミング言語(C、Perl、Postscriptなど)には、\ nnnとしてエスケープされたOctalのテキスト/グラフィックの表現があります。8進数表現は、6ビットのグループをエンコードするUTF-8の非ASCIIバイトで特に便利です。開始バイトには8進値\ 3nnがあり、継続バイトには8進値\ 2nnがあります。

  • 初期の浮動小数点演算: Octalは、Ferranti Atlas(1962)、Burroughs B5500(1964)、Burroughs B5700(1971)、Burroughs B6700(1971)およびBurroughs B7700(1972)コンピュータの浮動小数点にも使用されました。

  • トランスポンダ内:航空機は、地上レーダーから問い合わせを受けたときに4桁の8進数で表されるコードを送信します。このコードは、レーダー画面で異なる航空機を区別するために使用されます。

参考文献:https : //en.wikipedia.org/wiki/Octal


1
私はWikipediaのエントリーを読んで、特に指の間のスペースを数えるために少し楽しんだ。しかし、ほとんどの場合、この記事は私の質問の原動力であると言えるでしょう。私が疑ったように、現在のコンピュータアーキテクチャで使用されているワードサイズの不可分性は8進数表現を役に立たなくし、「16、32、64ビットワード…」として引用する段落の1つはまったく明確ではありません。「最上位バイトが4桁の8進数で塗りつぶされている」と「2の累乗のワードサイズの一部のプラットフォームには、まだ命令サブワードがある…」
jokinjo
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.