Hi,
und zwar:
Wie ließt der Computer die 0 und 1er ab. Macht er es so:
0010 0001 1001 0101
0101 0101 0101 1101
... ......
Also immer so wie wir lesen von oben nach unten von links nach rechts, oder?...
Hoffe ihr habt mich verstanden.
Danke und Gruß
Erstens, es gibt kein "oben und unten", was soll das sein? Eine Datei besteht aus einer fortlaufenden Reihe von Bits. Auch der Arbeitsspeicher ist eine fortlaufende Reihung von Bits.
Zweitens, diese Reihen von Bits werden gruppiert zu Bytes (8 Bit). Damit lassen sich z.B. ASCII-Zeichen 1:1 speichern, da jedes Byte einen Zahlenwert von 0 bis 255 darstellen kann.
Die Reihenfolge der Bits in dieser Bytegruppe wird je nach CPU unterschiedlich interpretiert. Das "Höchstwertige Bit vorne" (Little-Endian, z.B. Intel x86-CPUs) oder das "Niedrigswertige Bit vorne (Big-Endian, z.B. PowerPC/Sparc/POWER/PA-RISC).
Byte-Order:
00000000 = Null
10000000 = 128 (Little-Endian)
00000001 = 128 (Big-Endian)
11111111 = 255
Der Intel Itanium kann Beides, HP-UX auf Itanium ist Big-Endian, Windows auf Itanium Little-Endian, da bekommt die CPU beim Booten gesagt, was Sache ist.
Dass 255 Werte manchmal nicht ausreichen, ist ja klar. Für größere Zahlen werden dann mehrere Bytes zusammengefasst. Für die Integer-Typen (Ganzzahlen) ist die Reihung i.d.R. genauso wie bei den Bits, also das höherwertige Byte vorne oder hinten, je nach Architektur.
Word-Order für 16bit Worte:
00000000 00000000 = Null
11111111 00000000 = 255 (Little-Endian) (= [256] [0])
00000000 11111111 = 255 (Big-Endian) ( = [0] [256] )
11111111 11111111 = 65535
Interessant wird das z.B. bei der Kommunikation übers Netz, hier ist die "Network Byte Order" maßgebend und jedes plattformübergreifende Programm muss eine Konvertierungsroutine rufen bei der Datenübergabe ans Netzwerk, das dann je nach OS konvertiert oder eben nicth. (Glaube Big-Endian ist die Network Byte order, kannst aber sicher nachlesen).