なぜリトルエンディアンとビッグエンディアンの両方が使われているのですか? 質問する

なぜリトルエンディアンとビッグエンディアンの両方が使われているのですか? 質問する

なぜリトルエンディアンとビッグエンディアンの両方がまだ使われているのか今日バイナリ コンピュータ サイエンスが始まって約 40 年経った今、バイナリとは何ですか? どちらか一方と組み合わせるとうまく機能し、もう一方と組み合わせるとはるかにうまく機能しないアルゴリズムやストレージ形式はありますか? 私たち全員がどちらか一方に切り替えて、それを使い続ける方がよいのではないでしょうか?

ベストアンサー1

2 つの数字を足し算する場合 (紙の上でも機械でも)、最下位の桁から始めて最上位の桁に向かって足し算していきます (他の多くの演算でも同様です)。

16 ビット レジスタを持ちながら 8 ビット データ バスを持つ Intel 8088 では、リトルエンディアンであるため、このような命令は最初のメモリ サイクルの後に操作を開始できます。(もちろん、ワードのメモリ フェッチを増加順ではなく減少順に実行することは可能ですが、そうすると設計が少し複雑になると思われます。)

ほとんどのプロセッサではバス幅がレジスタ幅と一致するため、これによって利点は得られません。

一方、ビッグ エンディアンの数値は、MSB から比較できます (ただし、多くの比較命令は実際には減算を実行するため、いずれにしても LSB から開始する必要があります)。符号ビットも取得するのは非常に簡単です。

一方ではうまく機能するが、他方でははるかにうまく機能しないアルゴリズムやストレージ形式はありますか?

いいえ。あちこちに小さな利点はありますが、大きな利点はありません。

実際、リテ エンディアンの方が自然で一貫性があると思います。ビットの意義は 2 ^ (bit_pos + 8 * byte_pos) です。一方、ビッグ エンディアンでは、ビットの意義は 2 ^ (bit_pos + 8 * (word_size - byte_pos - 1)) です。

私たち全員が 1 つに切り替えて、それを使い続けるほうが良いと思いませんか?

x86 が優勢だったため、私たちは間違いなくリトルエンディアンに傾倒してきました。多くのモバイル デバイスの ARM チップには構成可能なエンディアンがありますが、x86 の世界との互換性を高めるために LE に設定されることがよくあります。私にとってはそれで問題ありません。

おすすめ記事