Wie sind Binary-Dateien aufgebaut?

... komplette Frage anzeigen

7 Antworten

Wenn du c Code, der ja effektiv nichts weiter ist als Text und Steuerzeichen in Bytecode umwandelst erhälst du eine Ausführbare Datei. Diese datei enthält nullen und einsen. 

Wenn du versuchst diese mit einem Texteditor zu öffnen, versucht dieser die nullen und einsen als Buchstaben zu interpretieren, da das aber eigentlich keine Buchstaben sind, bekommst du ein ziemlcihes Wirrwarr.

Wo die Dateien liegen, hängt davon ab was du machst, bei gcc kannst du das zielverzeichnis angeben. Bei Java Projekten liegt der code also die class-Files in einem OutVerzeichnis, oder wenn du mit maven baust in einem target-verzeichnis.

Kompiliert wird das ganze mit einem Kompiler, der weiß wie der Code bzw einzelne Codebausteine zu interpretieren sind. Wie genau das funktioniert, kann ich dir leider auch nicht sagen.

Und ein Computer versteht nullen und einsen, weil das seine natürliche Sprache ist. Effektiv könnte man eine Glühbirne auch als Ram benutzen, mit der Größe 1 bit. Du kannst in einem bit genau 2 Zustände speichern, an und aus, 0 und 1. Wenn du viele davon aneinander setzte kannst du halt immer mehr Werte speichern. bei 2 lampen bereits 0 bis 3.

Wenn du die Lampen dann noch mit Logik gattern und schaltungen versiehst kannst mit den lampen addieren.

Letzten endes wird alles was du an einem PC machst irgendwie auf nullen und einsen zurückgeführt.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von gerlochi
22.03.2016, 19:14

jetzt geht mir ein licht auf! danke

0

jedes Zeichen, ob Zahlen, Buchstaben  oder Sonderzeichen werden immer als "Nullen" und "Einsen" in einem Computer gespeichert.

Das A wird z.B. durch die binäre Folge 0100 0001  dargestellt. Die 0 ( Null) hat den Code 0011 0001.

Eine Datei, die nur aus Zahlen, Buchstaben und  Sonderzeichen besteht ist eine sogenannte ascii-Datei ( das ist ein Standard ).

Quell-Programme bestehen auch nur als ascii-Zeichen. Bei der Übersetzung in einen Maschinencode entstehen nahezu alle Werte zwischen 0000 0000 bis 1111 1111.

Wenn ein Text-Editor ascii-Code findet, dann zeigt er das als lesbares Zeichen an. Andere werden entweder nicht angezeigt oder aber in Form von irgendwelchen (nicht lesbaren ) Zeichen.

Antwort bewerten Vielen Dank für Deine Bewertung

Wie läuft das kompilieren ab vom Quellcode zu den Nullen und Einsen ab,
und wo befinden die sich dan, bzw, wie werden die Dateien ausgeführt?

Diesen Teil deiner Frage muss man wohl gesondert beantworten.
Compiler sind "Wunderwerke" , das alles zu erklären würde Bücher füllen. Hier nur kurz einige Aufgaben:

- Prüfung der "Rechtschreibung" eines Quellcodes
- Prüfung der Typ-Verträglichkeit ( man kann z.B. nicht 16 Bit in einen 8-Bit
                                                        Speicher laden usw.)
- Prüfung von Namen ( z.B. zur Bezeichnung von Speicherplätzen -Variablen)
- Prüfung auf richtigen Gebrauch von Schlüsselworten
  ( if , then , else, while , do foreach ...)

- Zusammenfügen einzelner Dateien ( include , source ... )

Das alles hat aber noch nichts mit der Übersetzung in einen binär-Code zu tun, denn das muss, (mit Einschränkungen) für jeden Computer, ob mit i8086, i80386 ... Pentium , 16- , 32-, 64-Bit ob im PC oder Mac oder Raspberry .... gleich sein.
Hinzu kommen noch die Besonderheiten des Betriebssystems ( Windows, Linux, OS-X ... )

Aus einem sogenannten Zwischencode wird dann der Maschinen-Code erstellt.
Alle Daten bestehen immer aus Nullen und Einsen. Wie ich in der ersten Antwort bereits geschrieben habe, besteht Quellcode aus, für den Menschen lesbaren,  Buchstaben, Ziffern und Zeichen.
Alle anderen Daten sind nicht so leicht lesbar und man kann sie auch sehr schlecht verstehen.

Wenn ich z.B. die hexadezimal-Folge

31 31

lese und weiß, dass das Maschinenbefehle für den Prozessor Z80 sind, dann weiß ich, dass damit ein 8-Bit-Speicher ( der Akkumulator) mit einer "1" geladen wird.

Ein C-Compiler hat diese Folge möglicherweise aus dem Befehl:

x='1' ; 

generiert.

Antwort bewerten Vielen Dank für Deine Bewertung

Hallo

wohin verschwinden die 0'en und 1'en?

Da empfehle ich erweiternd zu guenterhalt's Antwort noch diesen Link:

https://paulschou.com/tools/xlate/

Da kannst Du einen Text eingeben und der wird dir in Binärcode (Nullen & Einsen) und/oder auch Hex-Code uvm. umgewandelt. Du kannst aber auch einen Binärcode eingeben und bekommst als Ausgabe die jeweils anderen Codes.

Hier ein Binärcode für Dich:

01001000 01100001 01101100 01101100 01101111 00100000 01010111 01100101 01101100 01110100

Wenn Du also:

Wenn man eine entstandene binary Datei mit einem Texteditor öffnet, kommen nur Sonderzeichen, Buchstaben und Zahlen.

Dann benutze mal einen HEX-Editor, denn ein Texteditor erwartet natürlich ASCII-Texte und kann keinen Binärcode lesen.

Linuxhase

Antwort bewerten Vielen Dank für Deine Bewertung

Das einzige was ein Computer versteht sind Nullen (Keine Spannung) und Eins (Spannung). Mit vielen davon kann man, auf sehr umständliche Wege alle mathematische Operationen machen oder Texte umsetzen. Um zu verstehen wie das passiert muss man viele Jahre sich damit beschäftigen.

Antwort bewerten Vielen Dank für Deine Bewertung

Das sind mehrere Semester technische Informatik, was du hier fragst.
So etwas kann man nicht in einer einzigen Antwort erklären.
Dazu findest du im Internet genug, z. T. auch Universitätsskripte von Vorlesungen.
Suche dazu einfach im Internet, dort wirst du mit Sicherheit fündig.
Ich hoffe, ich konnte dir helfen.
LG Willibergi

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von gerlochi
22.03.2016, 19:13

danke

0
Kommentar von Willibergi
22.03.2016, 19:15

Gern geschehen. ;)

0

Hallo!

".. kommen nur Sonderzeichen, Buchstaben und Zahlen. "

Höchstwahrscheinlich, da dein Texteditor 8 oder 16 0er und 1er zusammenfasst, und dies dann eben solche Zeichen ergibt. Blank ist z.B. 27dez, kannst ja mal in binär umwandelnt (8 Bit, 8 0er und 1er).

0 und 1 ist ein Synonym für "an" "aus".

Ein Rechner ist aus Transistoren aufgebaut (die sind alle in so einem schwarzen Kasten versteckt), ein Transistor hat drei Eingänge, wobei einer steuert, ob Strom fliesst oder nicht, eben, ob er eine 0 oder eine 1 bekommt.

Wennm du wirklich wissen willst, wie so ein Rechner grundsätzlich funktioniert, schau dir Transistoren an, schau dir einfache Schaltungen an (AND-Gatter), versuche daraus einen Addierer zui bauen und dann hast du es kapiert.

Gruß

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Tschoo
22.03.2016, 22:42

... übrigens sind natürlich Text- oder ASCII-Dateien auch ein Folge von Nullen und Einsen, sie werden nur von den jeweiligen Programmen (Editor oder z.B. Word) nur so interpretiert, dass lesbarer Text rauskommt --> schönes Beispiel, öffne mal eine Worddatei mit dem Editor von Windows, der Editor kann nicht alles interpretieren, was Word so noch hat (vor allem Gliederung usw.)

2

Was möchtest Du wissen?