web-dev-qa-db-ja.com

リトルエンディアンvsビッグエンディアン?

2つに頭を巻き付けるのに問題があります。ビッグエンディアンで表現する方法を理解しています。

たとえば、-12は1111 1111 1111 0100です。

しかし、なぜリトルエンディアン表現が0100 1111 1111 1111ではなく1111 0100 1111 1111なのでしょうか。

25

エンディアンは、約バイトアドレス順です。リトルエンディアンは、下位バイトが下位アドレスを取得することを意味します。ビッグエンディアンとは、その逆です。つまり、ニブル(4ビットチャンク)ではなく、バイト(8ビットチャンク)についてです。私たちが使用するほとんどのコンピューター(いくつかの例外があります)は、個々のアドレスレベルでバイトをアドレス指定します。

-12の例:

メモリ内のリトルエンディアンは次のようになります。

000000: F4
000001: FF

メモリ内のビッグエンディアンは次のようになります。

000000: FF
000001: F4
17
lurker

リトルエンディアンは、基本的にマルチバイト値のバイト順序を逆にします

1111 1111 1111 0100は2バイトで、1111 1111は最初のバイトであり、1111 0100は2番目のバイトです。リトルエンディアンでは、2番目のバイト(または最下位バイト)が最初に読み込まれるため、最終的な表現は1111 0100 1111 1111

12
bakalolo

ビッグエンディアンの目的は、16進数をコンピューター画面に左から右に印刷して、低レベルまたは初心者のプログラマーが読みやすくすることです。言い換えると、ヘックスはメモリアドレスの低い方から高い方へ印刷されるため、ソフトウェアで変更しない限り、そのヘックスは反転します。リトルエンディアンの目的は、ウィングナットではなく、バイトをシーケンシャルな順序のままにすることです。これにより、開発者のために余分な作業を行わず、代わりに[〜#〜]非常に[〜 #〜]limitedソフトウェアでバイトを反転させたい人の数!

ビッグエンディアンを使用しないことはSTRONGLY ADVISEDです。今日のCPUはデュアルエンディアンであり、ビッグエンディアンとリトルエンディアンの両方を処理できるため、レガシーハードウェアとのインターフェイスがない限り、ほぼ業界全体でリトルエンディアンが使用され、ビッグエンディアンは開発者によって完全に廃止される予定です。

ソフトウェアのフォーマットなしのリトルエンディアン

    In RAM      Printed
    +----+     0x01000000
0x4 | 00 |
    | 00 |
    | 00 |
0x0 | 01 |
    +----+

ソフトウェアのフォーマットなしのビッグエンディアン

    In RAM      Printed
    +----+     0x00000010
0x4 | 01 |
    | 00 |
    | 00 |
0x0 | 00 |
    +----+

リトルエンディアンとソフトウェアフォーマット

    In RAM      Printed
    +----+     0x00000010
0x4 | 00 |
    | 00 |
    | 00 |
0x0 | 01 |
    +----+

エンディアンの起源

エンディアンという言葉は、実際には北米の古代先住民族です。ストーリーがどのように進んだのか正確に思い出せないので、穴を埋めるコメントを投稿してください。しかし、ストーリーは、愚かな何かをめぐって家族の確執に従事しているエンディアンの2つの部族がいたことであり、結局、封じ込めが長く続いた理由ですが、彼らがまだ怒っていたからといって戦っている彼ら。

これはバナナです!

バナナという用語は、有名な サルで行われたとされている非科学的な研究 を指します。 「科学者」はサルの束が入っている部屋にはしごを置き、はしごの上部にバナナを置きました。サルがはしごを登ろうとした場合、平均的な科学者たちはすべてのサルに水を噴霧します。サルは、はしごを登ろうとするすべてのサルを倒して、スプレーされないようにしました。結局、科学者たちはサルにスプレーするのをやめましたが、サルははしごを登ろうとする人を殴打し続けました。このストーリーの面白い点は、 誰かが作ったばかり だということです。これは、麻薬との戦争など、完全にバナナである場合の意味です。

確かに、消防用ホースでサルにスプレーした場合、元のストーリーはサルのバナナへの愛情を克服するのに十分な苦痛を与えなかったため、ストーリーが本当である可能性が高いですが、実際の科学者がそうではないかのようにつながっています。

ビッグエンディアンのバナンの正確な意味を理解するために、ビッグエンディアンの起源を見てみましょう。マイクロプロセッサの黎明期、マスクと機械をまだ手作業で作成していた頃、モトローラ社は、ビッグエンディアンを使用する方が当時の方が高速であることに少し気付きました。当時のモトローラCPUは最速であり、ビッグエンディアンの強固な陣営を築きました。間もなく集積回路のサイズが縮小されてからこのパフォーマンスの向上は無関係になり、最近のCPUはデュアルエンディアンになり、起動時にエンディアンを変更できるようになりました。これはバナナの話と全く同じです。誰かが何かを誤解し、彼らが何をしているのかを知らない人々に人気になり、今では論理はCOMPLETELY BANANAS !!!#DeleteBigEndian

3
user2356685