Umwandlung "little endian" zu "big endian"
-
Hi,
Wer sich ein wenig mit dem Aufbau eines Rechners und der Speicherverwaltung beschäftigt hat, kennt sicherlich "little endians" und "big endians".
Man sagt ja, dass man zwischen diesen beiden System umschaltet, indem man die letzten beiden Adressbits invertiert.
Nun bin ich gerade über ein Beispiel "gestolpert", wo sich mir ein paar Unklarheiten auftun
Folgendes:
Nehmen wir das Wort "Mauer", so ist jedes Zeichen einzeln mit Bits Adressiert (ASCII Standard, ein Zeichen = 8 Bits). Also hätte man beim "little endian" System z.B. diese Adressierung(nur die letzten Bits angegeben):
M = ....1100
a = ....1011
u = ....1010
e = ....1001
r = ....1000Hierbei müsste man nun die letzten drei Bits invertieren um umzuschalten. Theoretisch ja kein Problem, praktisch sollte das auch funktionieren, da 4 Buchstaben unter einer Adresse zusammengefasst werden(hexadezimal) und so dann 3 Leerbuchstaben entstehen. Nur hätte man dann das Problem, dass das Wort nicht "Mauer" hieße, sonder"\0\0\0Mauer" hieße. Könnt ihr mir folgen?

Also entweder ich hab da was übersehen oder ich werfe da gerade alle Möglich durcheinander

P.S. Irgenwie verwirrt mich gerade, dass Rechner meist partiell aufgebaut sind (also eine Adresse für 4 Bytes) und man trotzdem mit Bits auch adressieren kann...
-
Also ich kenne das anders, nix mit Bits wurschteln. Einzelne Bytes sind nicht betroffen, nur "größere Datentypen", z.B. ints. Hast du einen Integer (sagen wir mal 4 Bytes groß) mit dem Wert 305419896, wäre die hexadezimale Darstellung 0x12345678. In Big Endian würden die Bytes
12 34 56 78ab Adresse x gespeichert werden, in Little Endian78 56 34 12. Bei einer Umwandlung (egal welche Richtung) musst du hier also das 1. mit dem 4. und das 2. mit dem 3. Byte tauschen.
-
Es gibt sowohl bit- als auch bye-Endianes. Wobei das auf bit-Ebene praktisch nie beim Programmieren relevant ist
-
Hmm, ich habe nur das Ganze mit Bit Endians kennengelernt. Naja wie auch immer...
Eigentlich sind das ja nur Darstellungsformen, sodass es doch trotzdem einen weg (z.B. invertieren der Bits) geben muss. Das kann man ja ohne Probleme auf die Hex Werte anwenden.
Geht ja hier um Adressmanipulation, welche normalerweise im Hex-Wert angezeigt werden, aber intern ja trotzdem Bitweise abgehandelt werden oder?