グレイコード

この記事はシリーズの一部であり、シリーズインデックスにアクセスします。 ( シリーズインデックス )

グレイコードと呼ばれるものについて聞いたことがありますか? あなたがプログラマーでも、コンピューター愛好家でもない(または電気工学者にとって)なら、恐らくそうではないでしょう。 それは映画のような音ではないのですか? Tom HanksとAudrey Tatou(私の好きな女優の一人)は、Alan Turingの秘密の雑誌の最後のページである聖書のバイナリの中に隠された意味を調べます。 彼らは、バイナリで1つカウントアップしてRGBモニターにデータを添付すると、時間がたつにつれてその画面に表示される可能性のあるすべてのイメージが表示されることを発見しました。 すべての可能なイメージ。 画像で想像して、それは最終的に表示されます。 かなりクールハァッか?

用語

グレイコードという用語は、Bell Labsを担当していたFrank Gray氏の名前に由来しています。 グレイ氏についてもう1つの記事で詳しく調べてみることもできます。 今のところ、 “反映されたバイナリコード”とも呼ばれています。 グレイコードはまだ冷たく聞こえます。 1947年にフランク・グレイが1回、1953年に2回、1954年にもう一回特許を取得しようと試みられています。それらの熱心な発明者、グレイ氏も、フランスのエンジニアであるエミール・ボドットによって既に始まったばかりのバンドワゴンに飛び乗っていました。

コンセプト

グレーコードにはさまざまな種類がありますが、コンセプトは少し単純化されたものに煮詰められます。 基本的に一連のビットシーケンス(「2進数字システム」)であり、シンプルに保つために一連のバイトを想像してください。 シーケンス内の各バイトが1ビット変化します。 バイト内の1ビットは、その前のバイトとは異なります。 循環コードを作成すると、最後のバイトは最初のバイトとは1ビット異なります。

例は、物事をきれいにすることができます。 説明するために3ビット幅のグレーコードを示します(1バイトが長すぎます)。

コードを上下に動かすと、一度に1ビットしか変化しないので、これがどのように役立つのかを見ることができます。

ポイント

グレーコードは、特定の目的のために実際に作成されました(元々は電話と通信)。これは、スイッチがあるときにエレクトロニクスに特に役立ち、必ずしもすべてが必ずしも正確に状態を変更するわけではありません。私が101から010に変更された場合、110、または011、000、または111の間で誤って「読み込み」する可能性があります。一度に1つのスイッチだけが変更されると、それほど心配する必要はありません。

これらはエラー検出を容易にするために使用されますが、ディスク上のどの位置に読み取りヘッドがあるかを判断するためにも使用できます。エラー検出、位置決定(アングル)、マッピング、そしておそらくあなたが賢明なら他にもいくつかのことがあります。

面白いことに、グレイコードが実際にどのようなものか知っていますか?あなたはハノイの塔のゲームをプレイして、あるスティックから別のスティックにディスクを移動する必要がありますが、小さなディスクの上に大きなディスクを置くことはできません。グレイコードは、それらの問題を解決するためのマップとして役立ちます。ねえ、ねえ?

建設

では、どのようにして灰色のコードを構成しますか? ビットのシーケンスを反映することによって、バイナリ反射グレーコードを生成することができます。 0と1で始まり、それらを反映させ、最初の部分に0を、2番目の部分に1を追加します。 私はダイアグラムが最も実証的だと思う:

grayconstruction

見る? 私はそれが十分明確であることを望む。 これらのリストや数学には、さまざまな性質がありますが、これはこの入門記事の範囲外です。

トリビア

グレーコードには複数の種類があり、その中のいくつかは他のグレーコードよりも説明が容易です。 初心者のプログラマにとっては、説明しやすい代替のグレーコードの例に固執することをお勧めします。 私にとってそれはベケットグレイコードです。 私はこれに興味深い話もあると思う。 かつて、この劇作家Samuel Beckettが “Quad”と呼ばれる演劇を書きたいと思っていました。 それは16のセクションに分かれていた。 ベケットは、プレイヤーが各シーン(1つは出入りする)の周りを変えて、空のステージの始めと終わりを望んでいました。 これは、4ビットグレイコードで表すことができる。 しかし、彼は自分のセクションで出場したプレイヤーが最長でステージにいたプレイヤーであることを望んでいました。

これはどうすればできますか? プログラミングにおいて、この種の制限は先入れ先出し(FIFO)スタックによって実施される。 このような構築については、後の記事で詳しく説明しますが、当面は基本的には一連の人々を想像してください。 先着順:各人が参加したときに、人の行が行頭に向かって進行します。 これが演劇の要求とどのように類似しているのか分かります。 そのようなコードは存在しますが、残念ながら4人のプレーヤー(ビット)でも3人も存在することはできません。そのため、Beckettは本当にその目標を達成しませんでした。

だから、それは灰色のコードです。 それは秘密のバイナリコードのようなもので、時間の経過とともに失われます…しかし、それはまだ回路のような現代のデジタル時計に使われているので、ロマンチックな魅力を失ってしまいます。 私は何か新しいことを学んだことを願っています!

あなたが私の執筆を感謝するなら、私のパトロンを通して私を支えてください。( パトロン )

photo credit: 100 Days of Summer #17 – Power via photopin (license)

あわせて読みたい

コメントを残す

%d人のブロガーが「いいね」をつけました。