どちらの短い整数でも、この 4 バイト整数の最下位 2 バイトで構成されるというのは正しいですか?
はい、定義上。
bigE と littleE の違いは、最下位バイトが最下位アドレスにあるかどうかです。リトルエンディアン プロセッサでは、最下位アドレスが最下位ビットであり、x86 ではこのように処理されます。
これらは小さな E でも同じ結果になります。
short s = (short)i;
short s = *(short*)&i;
ビッグ エンディアン プロセッサでは、最上位アドレスは最下位ビットであり、68000 と Power PC はこのようにします (実際には Power PC は両方である可能性がありますが、Apple の PPC マシンは bigE を使用します)。
これらは大きな E でも同じ結果になります。
short s = (short)i;
short s = ((short*)&i)[1]; // (assuming i is 4 byte int)
ご覧のとおり、リトルエンディアンを使用すると、オペランドの大きさを知らなくても、オペランドの最下位ビットを取得できます。little E には、下位互換性を維持するという利点があります。
では、ビッグエンディアンの利点は何ですか? 読みやすい 16 進ダンプを作成します。
実際、Motorola のエンジニアは、下位互換性よりも 16 進ダンプを読み取る負担を軽減することが重要であると考えていました。インテルのエンジニアは、反対のことを信じていました。