Antwort 1:

Kurze Antwort: Binärcode wandelt alle Informationen in Binärcodes um. Maschinencode ist Binärcode für native Maschinenanweisungen.

Details: Binärcode ist ein nicht sehr häufig verwendeter Begriff, der die Verwendung von Nullen und Einsen zum Codieren komplexer Informationen wie Zahlen, Text, Audio, Video und anderer Informationen bedeutet. Es ist eine grundlegend wichtige Idee in der Informatik und Technik, weil

  1. Es ist einfacher, Geräte mit nur zwei eindeutigen Zuständen zu erstellen - 0 oder 1. Sie können Spannung, magnetische Ausrichtung und alle anderen physikalischen Versionen von 0 und 1 verwenden. Es gibt eine umfangreiche Theorie der Booleschen Algebra zur Manipulation von 0en und 1en sowie theoretischen Funktionen .

Mit n 0s und 1s oder n Bits können wir 2 ^ n Muster erstellen. Beachten Sie, dass 1 Bit zwei Muster ergibt, 0 oder 1, und dass beim Hinzufügen eines zusätzlichen Bits die alten Muster zweimal verwendet werden - einmal mit einer führenden 0 und einmal mit einer führenden 1, wodurch die Gesamtzahl der Muster mit jedem Bit verdoppelt wird.

Zum Beispiel: Um eine positive Zahl von 0 bis 2 ^ (n-1) darzustellen, sind n Bits (vorzeichenloses int) erforderlich. Die Darstellung eines von 256 Zeichen erfordert 8 Bit (ASCII). Die Darstellung eines von 32 Befehlen erfordert 5 Bits (häufig als Operationscode für einen nativen Computerbefehl bezeichnet). Die Darstellung einer von 32000 Frequenzen erfordert 15 Bit.

Im Allgemeinen bedeuten die Bits in einem bestimmten Binärcode nichts ohne den Kontext dessen, was die Bits darstellen und wie die Muster mit dem Ziel übereinstimmen. Nehmen Sie zum Beispiel vorzeichenlose Ganzzahlen, beispielsweise drei Bits. Die acht Muster 000, 001, 010, 011, 100, 101, 110, 111 repräsentieren die Zahlen 0 bis 7.

Maschinencode ist ein häufig verwendeter Begriff für ein Binärprogramm, das in der Muttersprache einer Maschine geschrieben ist. Zum Beispiel habe ich eine Addiermaschine mit zwei Anweisungen Set und Add, die positive Zahlen zwischen 0 und 7 verwaltet.

  1. Set x: setzt total auf x. Addiere x: fügt x zur Summe hinzu.

(Hinweis: Wenn Sie über 7 gehen, wird dies nur umgangen. Technisch gesehen handelt es sich also um einen Mod 8-Addierer. Set 8 ist also dasselbe wie Set 0).

Um eine Codezeile zu codieren, müssen wir entscheiden, wie Nullen und Einsen mit den Anweisungen abgeglichen werden sollen. Ich werde 0 für Set und 1 für Add verwenden und x wird binär geschrieben.

Somit bedeutet 00000000, dass die Summe auf 0 gesetzt wird; und 10000001 bedeutet, dass man eins zur Summe addiert.

Das ist es. Der Maschinencode für diese Maschine verwendet 8 Bit pro Befehl. Beachten Sie, dass wenn ich eine Anweisung als Set 0 anstatt als 00000000 geschrieben habe, dies normalerweise als Assemblycode bezeichnet wird. Es ist ziemlich einfach, Baugruppencode in eine Maschine umzuwandeln. Die wirklichen Auswahlmöglichkeiten sind im Assembler-Code enthalten. Der Maschinencode ist lediglich die Binärcode-Version der Baugruppe.

Wenn Sie nun ein Semester verbringen möchten, kann ich Ihnen beibringen, wie der Maschinencode eines modernen Computers aussieht, erklären, wie seine Anweisungen mit 32 Bit abgeglichen werden, und über Operationscodes, Adressmodi und Formatierung sprechen.


Antwort 2:
  1. Binärcode ist die Basisschicht. Es ist das System von Einsen und Nullen, das durch einen elektronischen Schalter in einem Computer dargestellt werden kann. Computer haben Milliarden dieser winzigen Schalter und die elektrischen Signale, um sie zu bedienen, laufen mit unglaublich hoher Geschwindigkeit. Es ist die Kombination aus Menge und Geschwindigkeit, die Computer zu nützlichen Datenverarbeitungswerkzeugen macht, anstatt zu einem teuren Lichtschalter. Maschinencode ist die nächste Schicht, in der einem Binärcode eine Bedeutung zugewiesen wird, um den Computer anzuweisen, einen Prozess auszuführen Außerdem wird einem Binärcode zur Darstellung von Daten eine Bedeutung zugewiesen, beispielsweise den ASCII-Zeichencodes zur Darstellung von Buchstaben.

Nehmen Sie zum Beispiel den Binärcode: 01000001

In Dezimalzahlen könnte dies die Zahl 65 darstellen.

In ASCII ist dies der Zeichencode für den Buchstaben A.

Im Z80-Maschinencode lautet die Anweisung: ld b, c - was bedeutet, dass der Inhalt des Registers 'c' in das Register 'b' geladen wird.

Es gibt viele tausend verschiedene Bedeutungen, die der Binärdatei zugewiesen werden, um alle Arten von Daten und Verarbeitungsmethoden darzustellen, von Bildern über Audiodateien, E-Books, Konten, Word-Dokumente usw. usw.

Angesichts des Binärcodes 01000001 gibt es keine Möglichkeit zu wissen, was er darstellt, es sei denn, wir kennen den Kontext, in dem er verwendet wird. Dies kann eine Maschinencode-Anweisung sein, ein Teil einer Audiodatei, der Buchstabe A in einer Textdatei oder ein E, das verschlüsselt wurde, oder ein Pixel, das Teil einer Wimper in einem Selfie ist.


Antwort 3:

Ich bin nicht die Art von Person, die semantische Debatten genießt. Lassen Sie mich nur meine beste Antwort auslegen.

Für jede bestimmte CPU gibt es eine Reihe von Anweisungen, mit denen Programme erstellt werden können, die auf diesem Prozessor ausgeführt werden. Wenn ein Programm kompiliert und verknüpft wird, kann der Ausgabecode als „Maschinencode“ bezeichnet werden - mit dem Konzept, dass die CPU (ob PC, Mac, Telefon, Tablet oder eingebetteter Prozessor in Ihrem Auto, Kühlschrank oder Waschmaschine) dies kann um jeden Code direkt zu lesen und auszuführen.

Die Bedienungsanweisungen, Festplattencontroller usw. erschweren die Arbeit - aber irgendwann wird der „Maschinencode“ in den Speicher geladen, und die CPU zeigt auf die erste Anweisung und beginnt Schritt für Schritt mit der Ausführung des erstellten Programms.

Maschinencode hat die implizite Bedeutung, dass ein bestimmter Prozessor ihn Befehl für Befehl ausführen kann. Jeder Prozessor hat einen anderen Satz von Maschinencodes, und die Programme, die auf verschiedenen Prozessoren ausgeführt werden, haben alle einen anderen Maschinencode.

Für mich - der Begriff „Binärcode“ ist ein Oberbegriff - bedeutet dies, dass einige digitale Symbole (vermutlich binär, obwohl noch oktal oder hexadezimal impliziert werden könnten) zur Darstellung digitaler Daten verwendet werden. Der Maschinencode (dh die Anweisungen für einen bestimmten Prozessor) kann auf diese Weise angezeigt werden. Binärcode kann jedoch auch andere Daten bedeuten - möglicherweise Karten, Bilder usw.


Antwort 4:

Ein wichtigerer Unterschied, den Sie verstehen müssen, ist der Unterschied zwischen „Assemblersprache“ oder Assembler und dem Maschinencode oder der binären Darstellung von Anweisungen.

Wie andere kommentiert haben, bedeuten Maschinencode und Binärdatei dasselbe und sind die Anweisungen und Daten im Speicher, die die CPU ausführen soll. Die Kodierung solcher Anweisungen kann sehr komplex und für einen Menschen nahezu unmöglich zu lesen sein!

Im Gegensatz dazu soll Assembler-Sprache vom Menschen beschreibbar und lesbar sein, ist eine Textdarstellung von Anweisungen und der Assembler bietet dem Entwickler viel Hilfe beim Erstellen des Binärcodes! Die Assemblersprache wird vom Assembler in Maschinencode konvertiert.

Ein Beispiel für die Hilfe, die der Assembler bereitstellt, ist das Berechnen von Adressen von Sprungbefehlszielen und das Berechnen von Adressen von Datenelementen. Ziemlich unmöglich von Hand zu machen, wenn jemand versucht hat, den Maschinencode von Hand zu schreiben!

Eine gute Möglichkeit, Beispiele für Assembly-Code anzuzeigen, besteht darin, den C-Compiler mit einem -S-Argument aufzurufen und die Ausgabe zu überprüfen! Das macht Spaß.