Cześć,
staram się rozwiązać poniższe zadanie, jednak po przeczytaniu artykułów na Wiki na temat big endian i little endian nie jestem w stanie tego zrobić.
Czy mógłby ktoś z Was mi wytłumaczyć jak to działa? Nie chodzi mi o odpowiedzi, ponieważ odpowiedzi mam - chcę się jednak nauczyć jak to robić.
Dziękuję
grubokońcówkowe i cienkokońcówkowe
omujborze, jak ja współczuję ludziom, którzy tego muszą się po naszemu uczyć.
Ok, jak ja to sobie zapamiętuję:
Big Endian - po ludzku
Little Endian - od dupy strony
Jest to po prostu kolejność zapisu cyfr w zapisie pozycyjnym. Dla przykładu, 123 jako liczbę czterocyfrową w Little Endian zapiszesz 3210, a w Big Endian 0123. Oba oznaczają to samo (0 * 103 + 1 * 102 + 2 * 101 + 1 * 100)
Musisz wziąć pod uwagę, że w tym kontekście "cyfrą" dla procesora jest 1 bajt¹, tak więc mając liczbę 12 34 56 78
16 w Little Endian zapiszesz 78 56 34 12
, a w Big Endian 12 34 56 78
.
Tak przy okazji: przed C99 (oraz w C++) takie użycie unii to UB.
¹ mówimy o popularnych architekturach
tak więc mając liczbę
12 34 56 78
16 w Little Endian zapiszesz78 56 34 12
, a w Big Endian12 34 56 78
.
Chodzi o ciąg bajtów w pamięci, bo liczba dziesiętna 12345678 daje szesnastkowo:
0x00BC614E
Po odwróceniu
0x4E61BC00
I zamianie na dziesiętną daje 1 315 027 968, czytli zupełnie co innego niż 78 56 34 12.
Pozdrawiam
16 oznacza podstawę. Pozdrawiam.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.