Czy mam rację, że w obu krótkich całkowitych będzie się składać z 2 najmniej znaczących bajtów tej 4-bajtowej liczby całkowitej?
Tak, z definicji.
Różnica między bigE i littleE polega na tym, czy najmniej znaczący bajt znajduje się na najniższym adresie, czy nie. Na małym procesorze endian, najniższe adresy są najmniej znaczącymi bitami, x86 robi to w ten sposób.
one dać taki sam efekt na małej E.
short s = (short)i;
short s = *(short*)&i;
na dużym procesorem endian, najwyższe adresy są najmniej znaczące bity, 68000 Power PC i zrobić to w ten sposób (w rzeczywistości Power PC może być zarówno , ale maszyny PPC firmy Apple korzystać Bige)
one dają ten sam rezultat na dużym E.
short s = (short)i;
short s = ((short*)&i)[1]; // (assuming i is 4 byte int)
Więc, jak widać, niewiele endian pozwala uzyskać u leas t znaczące bity operandu , nie wiedząc, jak duży jest on. niewiele E ma zalety dla zachowania kompatybilności wstecznej.
Jaka jest przewaga dużego endianina? Tworzy zrzuty heksadecymalne, które są łatwiejsze do odczytania.
Naprawdę inżynierowie firmy Motorola uważali, że zmniejszenie obciążenia podczas odczytywania zrzutów heksadecymalnych jest ważniejsze niż kompatybilność wsteczna. Inżynierowie z Intela wierzyli w coś wręcz przeciwnego.
Proponuję użyć matematyki, aby zmniejszyć liczbę do odpowiedniego zakresu (rozmiaru) przed kopiowaniem. Kompilatory utrzymają Endianness, więc nie będziesz mieć wielu zmartwień. Kopiowanie fragmentów zmiennych skutkuje niepokojem o Endianness. –