Allgemeine Frage zu Binäres System im Computer

Macmini2

Macmini2

Aktives Mitglied
Thread Starter
Dabei seit
08.05.2011
Beiträge
346
Reaktionspunkte
1
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ß
 
Ich habe eine Lösung nicht gefunden im Wiki. Lißt er es jetzt so wie beschrieben oder wie?
 
Ich hoffe, ich erkläre das ricthtig/bzw. habe es selber richtig verstanden, vll kann das noch jemand bestätigen obs so richtig ist?!

Also, die einzelen bits werden in Registern verarbeitet. In deinem Fall hast du jetzt immer 4-Bit zusammengefasst. Wenn die Register auch 4-Bit groß sind, werden diese gleichzeitig verarbeitet. Diese werden gleichzeitig verarbeitet. Ansonsten werden die Daten in der Reihenfolge verarbeitet, in der sie ankommen, dass, was du z.B. im HexEditor anguckst, ist ja nur eine Darstellung der Daten.
 
Motorola und damit die ppcs Big-Endian, intel/amd Little-Endian
 
Also so wie ich das verstanden habe haben die keine richtige Reihenfolge. Also so wir lesen ist das nicht oder?
Aber was ich verstanden habe ist dass sie immer in einem Raster kommen also ich habe oben ein 4er Raster gemacht aber es geht auch andere Raster.
Welches Raster wird eigentlich zum Beispiel beim Intel Core 2 Duo benutzt?
 
Naja Du hast Register. Ganz früher waren die mal 8Bit breit. Die werden auf einmal gelesen, 16Bit-Rechner können dann eben 16 Bits auf einmal lesen und so fort...

Die Bits selber werden wie in dem Wiki dargestellt entweder von links nach rechts oder von rechts nach links gewertet.

Die Bytes die dann in die Register geladen werden, werden nacheinander gelesen. Hier gibt es also kein links/rechts/oben/unten sondern einen zeitlichen Verlauf (vorher/nachher). Der Speicher selber ist vereinfacht gesagt ein eindimensionaler Raum von Bytes ( oder eben größeren Speichereinheiten bei 16,32 oder 64 Bit). Ein Links/Rechts/Oben/unten gibt es hier nicht, sondern wie in einer Warteschlange ein davor und ein danach!

Das ist jetzt grob vereinfacht - tatsächlich gibt es noch einige andere Ansätze und tstächlich muß nicht jeder "Text" kontinuierlich an einem STück an einem Ort gespeichert sein, er kann auch in Fragmenen abgelegt werden ( wogegen dann das berühmte Defragmentieren hilft).
 
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).
 
ok danke,
also kommt es auf den Prozessor und die Sprache (also Endian und so) drauf an welches raster also 4 oder 8 bit kommt?
 
Zuletzt bearbeitet:
ok danke,
also kommt es auf den Prozessor und die Sprache (also Endian und so) drauf an welches raster also 4 oder 8 bit kommt?

Ja, wobei "Endian" keine Sprache ist. Little oder Big Endian gibt nur die Leserichtung der Bits an (das was du gefragt hast). Bei Little Endian ist das zuerst gelesen Bit das "höchstwertige", bei Big Endian das "niederwertigste". Bits machen nur zusammengefasst zu Bytes einen Sinn, denn bei einzelnen Bits gäbe es ja kein höher- oder niederwertig, und man könnte nur zwei Zustände, "Strom an" oder "Strom aus" kodieren.
Bei einem 8Bit-Prozessor werden 8 Bits zusammengefasst, um einen Befehl zu kodieren. Es gibt also maximal 256 Befehle, die der Prozessor ausführen kann (in der Praxis deutlich weniger). Wenn der Prozessor eine Bitfolge von 0100001 liest (dezimal ist das 65), kann dies beispielsweise bedeuten "nimm die nächsten 8 Bit als Daten statt als Befehl, und stopf sie in den Zwischenspeicher A". Eine Bitabfolge 01000001 10000000 (dezimal 65 128) würde der Prozessor also ausführen als "stopf den Wert 128 in Zwischenspeicher A". Die Wert kann der Rechner dann weiter verarbeiten. Angenommen, der nächste Befehl wäre 00100010 (dezimal 34) und hieße, "nimm die nächsten 8 Bit als Daten, und addiere sie zum Inhalt des Zwischenspeichers A", dann wäre 0010010 00000100 der Befehl "addiere 8 zum Inhalt des Zwischenspeichers". Am Ende der Abfolge 01000001 10000000 0010010 00000100 würde als das Ergebnis der Addition, 10000100 (dezimal 136), im Zwischenspeicher A stehen.
 
So wie Du die Frage gestellt hast, (und je nachdem was Du als Antwort erwartest…) würde ich Dir den Tipp geben mal mit einem Lehrbuch zum Thema Binärcode / Datenverarbeitung anzufangen. Wenn Du Dir die "Häppchen" aus Wiki zusamensuchst, geht zwangsläufig der "rote Faden" verloren. Im Prinzip ist der Binärcode die simpelste Art zu zählen, sie taugt allerdings überhaupt nichts, wenn man keine Konventionen festgelegt hat…*Regeln, Sequenzen, Operationen etc.
Du kannst dir die schönste Sprache ausdenken, wenn sie keiner versteht (Vokabeln, Grammatik etc.) wird sie kein Erfolg…
 
Little und Big endian bezieht sich auf Bytes, nicht auf bits. Verwechselt das bitte nicht mit MSB/LSB first.

Eine Zahl mit 16 Bit, z.B. 11010011 10001000 sieht im Speicher so aus:
Big Endian: 11010011 10001000
Little Endian: 10001000 11010011

Es gibt bei einem PC kein "oben links". Er arbeitet mit Adressen und beginnt bei Adresse 0 zu lesen. An dieser befindet sich das erste Byte. An Adresse 1 das zweite usw.
Wie viele Adressen ein PC verwalten kann hängt davon ab wie viel "bit" er hat. 8, 16, 32 und neuerdings eben 64. Mit 64 Bit kannst Du 18446744073709551616 Adressen ansprechen. Das ist schon eine Menge ;).
 
Little und Big endian bezieht sich auf Bytes, nicht auf bits. Verwechselt das bitte nicht mit MSB/LSB first.

Gibt es denn Plattformen mit den gegensätzlichen

byte order "Little Endian" und bit order "MSB first" bzw.
byte order "Big Endian" und bit order "LSB first"?
 
Zurück
Oben Unten