51

コードで 8 進数を使用したことはありませんし、8 進数を使用したコードに出くわしたこともありません (16 進数とビットいじりにもかかわらず)。

私は 1994 年頃に C/C++ でプログラミングを始めたので、これには若すぎるのでしょうか? 古いコードは 8 進数を使用しますか? C では先頭に 0 を追加することでこれらのサポートが含まれていますが、これらの基数 8 の数値リテラルを使用するコードはどこにありますか?

4

13 に答える 13

53

私は最近、3 ビット フィールドにアクセスするネットワーク プロトコル コードを書かなければなりませんでした。それをデバッグしたいときは Octal が便利です。

念のため、これの 3 ビット フィールドを教えてもらえますか?

0x492492

一方、この同じ数値を 8 進数で表すと、次のようになります。

022222222

さて、最後に、バイナリで(3つのグループで):

010 010 010 010 010 010 010 010
于 2008-09-04T19:36:40.530 に答える
35

最近、8 進リテラルに出くわす唯一の場所は、Linux でファイルのパーミッション ビットを処理するときです。これは通常、3 桁の 8 進数字で表されます。各数字は、それぞれファイル所有者、グループ、および他のユーザーのパーミッションを表します。

たとえば、0755 (ほとんどのコマンド ライン ツールでは 755 のみ) は、ファイル所有者が完全なアクセス許可 (読み取り、書き込み、実行) を持ち、グループと他のユーザーが読み取りと実行のアクセス許可のみを持つことを意味します。

これらのビットを 8 進数で表すと、設定されている権限を簡単に把握できます。0755 は一目でわかりますが、493 や 0x1ed はわかりません。

于 2008-09-04T19:37:05.350 に答える
29

ウィキペディアより

もともと 8 進数がコンピューティングで広く使用されるようになった当時、IBM メインフレームなどのシステムは 24 ビット (または 36 ビット) ワードを採用していました。8 桁 (または 12 桁) で機械語全体を簡潔に表示できるため、8 進数は 2 進数の理想的な省略形でした (各 8 進数は 3 桁の 2 進数をカバーします)。また、オペレータ コンソールにニキシー管、7 セグメント ディスプレイ、および電卓を使用できるようにすることで、コストを削減しました。2 進表示は複雑すぎて使用できず、10 進表示では基数を変換するために複雑なハードウェアが必要であり、16 進表示では文字を表示する必要がありました。

ただし、最新のコンピューティング プラットフォームはすべて、16 ビット、32 ビット、または 64 ビットのワードを使用し、8 ビットで 1 バイトを構成します。そのようなシステムでは 3 桁の 8 進数字が必要であり、最上位の 8 進数字は 2 桁の 2 桁しか表現できません (また、一連の同じ 8 進数字は次のバイトの 1 つの 2 進数字を表します)。したがって、今日のプログラミング言語では 16 進数がより一般的に使用されています。16 進数は 4 つの 2 進数をカバーし、最新のすべてのコンピューティング プラットフォームには 4 で割り切れる機械語があるためです。ワード サイズが 2 のべき乗の一部のプラットフォームには、8 進数で表示するとより簡単に理解できる命令サブワードがまだあります。これには PDP-11 が含まれます。現代のユビキタスな x86 アーキテクチャもこのカテゴリに属します。

-アダム

于 2008-09-04T19:34:05.123 に答える
26

コードで 8 進数を使用したことも、8 進数を使用したコードに出くわしたこともありません。

私はあなたが持っているに違いない。標準によれば、ゼロで始まる数値リテラルは 8 進数です。これには、自明なことが含まれます0。リテラル ゼロを使用したり見たりするたびに、これは 8 進数でした。奇妙ですが本当です。:-)

于 2009-10-24T23:33:18.133 に答える
8

商用航空は、由緒あるArinc 429バス規格で8進数の「ラベル」(基本的にメッセージタイプID)を使用しています。したがって、アビオニクスアプリケーションのコードを作成するときに8進数でラベル値を指定できるのは素晴らしいことです...

于 2009-08-05T04:09:07.073 に答える
6

また、航空機のトランスポンダで 8 進数が使用されているのを見てきました。モード 3a トランスポンダ コードは、誰もが 4 つの 8 進数として扱う 12 ビットの数値です。ウィキペディアにはもう少し詳しい情報があります。一般的にコンピュータ関連ではないことはわかっていますが、FAA もコンピュータを使用しています :)。

于 2008-09-04T19:59:17.870 に答える
5

chmodUnix の世界ではand関数に便利ですが、mkdirそれ以外の一般的な用途は思い浮かびません。

于 2008-09-04T19:31:04.020 に答える
4

私はPDP-11を介して Octal と接触し、どうやら C 言語も接触しました :)

于 2008-09-04T19:42:21.310 に答える
4

言語の誕生までさかのぼり、無数のプログラムに存在する標準を変更する地上の理由はありません。私はまだ ASCII 文字を 8 進値で覚えています。A の 16 進値を考え出す必要がありますが、8 進法では 101 です。数値 0 は 060... ^C は 003...

つまり、私はしばしば 8 進数表現を使用します。

どうしても地雷を曲げたい場合は、PDP-10 のワード形式を見てください...

于 2014-01-17T01:13:17.313 に答える
3

PDP-8でプログラムすることを学んだ人は誰でも、彼の心の中に8進数の暖かい場所があります。ワードサイズは12ビットで、それぞれ3ビットの4つのグループに分割されていたため、-1は77778進数でした。このスキームは、16ビットワードを備えたPDP-11で永続化されましたが、さまざまな目的で8進表現が使用されていたため、現在も使用されている*NIXファイル許可スキームです。

于 2010-03-10T14:24:08.820 に答える
1

Octal は、最初に利用可能なディスプレイ ハードウェア (7 セグメント ディスプレイ) で最も有用でした。これらの元のディスプレイには、後で使用できるデコーダーがありませんでした。

したがって、デジタル レジスタ出力は、0,1,2 3,4,5,6,7 の 8 つのシンボルしか表示できない利用可能なディスプレイに合わせてグループ化されました。

また、最初の CRT ディスプレイ管はラスタ スキャン ディスプレイであり、最も単純な文字記号ジェネレータは 7 セグメント ディスプレイと同等でした。

モチベーションの原動力は、いつものように、可能な限り安価なディスプレイでした。

于 2011-03-31T15:25:47.377 に答える