7

私は最近、私たちが期待するものを生み出すために、コンピューターのハードウェアがどのような仕事をしなければならないかについてもっと考えています。

テキストと色を比較すると、どちらも1と0の組み合わせに依存しており、バイトごとに256の可能な組み合わせがあるようです。ASCIIは、(01100001)などの文字を文字「A」として表すことができます。ただし、ランダムな色を表す色R(01100001)、G(01100001)、B(01100001)が存在する場合があります。低レベルで考えると、コンピューターはこれらの1と0のコレクションを読み取っているだけです。コンピューターが、文字AではなくR(01100001)、G(01100001)、B(01100001)の色を3回レンダリングするようにするために必要なことです。私の画面に?

4

2 に答える 2

7

この質問がStackOverflowに適しているかどうかは完全にはわかりませんが、とにかく基本的な答えを示します。それは実際には非常に複雑な質問ですが、あなたがそれに答えたいと思う深さに応じて、私はそうするためにコンピュータアーキテクチャに関する本全体を書くことができました。

簡単にするために、これを説明します。これはすべてコンテキストの問題です。まず、テキストに取り組みましょう。

たとえば、テキストエディタを開くと、そこに表示されるデータはテキストであるという暗黙の前提があります。表示されるテキストは、メモリ内のいくつかのバイトです(ディスク上のいくつかのバイトからコピーされた可能性があります)。これらのバイトがテキストであるというメモリの観点からは、魔法のような内部コンテキストはありません。代わりに、テキストエディタのソースには、これらのバイトを指し、たとえば「これらのバイトは300文字のテキストを表す」というコマンドがいくつか含まれています。次に、ASCII(テキストをエンコードする他の多くの方法があります)のようなエンコーディングに従ってそれらのバイトを文字にマッピングし、フォント内のそれらの文字を見つけ、そのフォントを次のように書き込むハードウェアに至るまで、ライブラリコードを含む複雑な一連の手順があります画面など。

重要なのは、それらのバイトをテキストとして解釈する必要がないということです。それは、テキストエディタが行うことだからです。仮にそれを画像プログラムで開き、それらの同じ300バイトをRGB値の10x10配列(または画像)として解釈するように指示することができます。

色に関しては、同じ論理が適用されます。それらはメモリ内の単なるバイトです。しかし、画面に何かを描画しているコードが、どのピクセルをどの色で書き込みたいかを決定すると、メモリマッピングを介してそれらのバイトをビデオカードにパイプし、モニターに送信されるコマンドに変換します(それでもピクセルと色を表すいくつかのバイナリ形式では、現実ははるかに複雑ですが)、モニター自体には、これらの色を物理ピクセルにマッピングする詳細を処理するファームウェアが含まれています。色自体を表す数値は、ある時点で各R / G / Bチャネルへの特定の電流に変換され、その強度が増減します。

今のところ時間はこれで全部ですが、それは始まりです。

更新:私の要点を説明するために、ここからフラットランドのテキストを取り上げました。これはわずか216624バイトのASCIIテキストです(コンテキストに基づいてWebブラウザによってそのように解釈されます。.txt拡張子は役立ちますが、Webサーバーはプレーンテキストとして解釈する必要があることをブラウザに通知するMIMEタイプヘッダーも提供します。ブラウザまた、バイトを分析して、それらのパターンがプレーンテキストのパターンに似ていることを確認する場合もあります(ASCII文字を表さないバイトの数が圧倒的に多いことはありません)。テキストの最後にいくつかのスペースを追加したので、その長さは217083、つまり269 * 269 * 3であり、269 x269RGBイメージとしてプロットされます。

それほど面白くはありません。しかし、要点は、私がそれらの同じ正確なバイトを取得して、ソフトウェアに「わかりました、これらは現在RGB値です」と言ったということです。プレーンテキストのバイトを画像として見ることが役に立たないというわけではありません。たとえば、暗号化アルゴリズムを視覚化するのに便利な方法です。 これは、かなり安全でないアルゴリズムで暗号化された画像を示しています。元の暗号化されていないファイルのバイトパターンを非常によく理解できます。英語のような特定の言語のテキストにも既知の統計パターンがあるため、画像ではなくテキストの場合も同じです。優れた暗号化アルゴリズムは、暗号化された画像をランダムノイズのように見せます。

于 2013-02-21T20:35:23.103 に答える
1

0 と 1 は 0 と 1 であり、それ以上のものではありません。バイトは 8 ビットの集まりです。情報に割り当てる意味は、その時点で必要なもの、情報を解釈するために使用する「言語」によって異なります。65 は、ASCII の文字 A または数値 65 のいずれかですint a = 65 + 3。低レベルでは、さまざまな (数千の) マシン命令が実行され、たとえば、読み取り中のファイルの種類、そのヘッダー、データを要求するプロセスなどに応じて、データが適切に処理されるようにします。さまざまな情報を処理するために使用するさまざまな高レベル関数は、非常にさまざまなマシン コードに展開されます。

于 2013-02-21T20:37:44.273 に答える