Information druch 0 und 1?

6 Antworten

Hallo,

0 und 1 stellen jeweils eine Information dar an oder aus!

Diese, als Kombination, benutzten bereits in grauer Vorzeit die Urvölker:

Rauchzeichen!

Mal folgendes angenommen:

Wir wohnen in Sichtweite und geben uns mit der Taschenlampe jeweils Lichtzeichen (hier also an und aus):

  • 2 mal an heißt ich komme zu Dir
  • 3mal an heißt kommst Du zu mir?
  • 5 mal an heißt ich kann nicht kommen

usw.

Morsezeichen funktionieren ebenso (hier also kurz und lang).

Man muss es eben alles vorher definieren, welche Art und welche Folgen was bedeuten.

Genauso funktionieren auch diese digitalen Signalübertragungen, nur eben millionen mal schneller

Grüße aus Leipzig


aktenschweng939 
Fragesteller
 09.02.2023, 23:19

Also wird wirklich jede mögliche Abfolge von an und aus davor selbst vom Mensch definiert ? Wie bitte soll denn das funktionieren

1
AlterLeipziger  09.02.2023, 23:23
@aktenschweng939

Tja, genauso ist das aber!

Der Miroprozessorhersteller gibt vor, welche Eingangssignale die entsprechenden Ausgangssignale erzeugen - diese Bitabfolge nennt sich dann Maschinensprache

Da das sehr schwer ist, große Programme zu erzeugen, haben andere Programmierer entsprechende "Abkürzungsalgotithmen" erfunden, die "höheren Programmiersprachen".

1
R4c1ngCube  09.02.2023, 23:29
@aktenschweng939

Das Geheimnis ist Abstraktion.

Mithilfe von Transistoren setzt man Logikbausteine um (and/or/not)

Ab dann definiert man den Aufbau vom Computer nicht mehr mit Transistoren sondern Logikbausteinen.

Mithilfe von Logikbausteinen setzt man komplexere Logikbausteine um (Volladdierer, Multiplexer, Flipflops)

Mit denen setzt man dann Komponenten von Computern um (RAM-Bausteine, Arithmetische Rechenbausteine, Decoder, Programmzähler, Caches etc.)

Auf Basis darauf kommen dann weitere Ebenen > Microprogramme > Maschinencode > Assembler > low level Sprachen wie c > höhere Sprachen wie Python > Bibliotheken > Frameworks > Programme mit grafischer Oberfläche

Und dazwischen gibt es noch viele viele viele andere Ebenen.

Eine Zeile Programmcode kann heute millarden von Zustandsänderungen von Transistoren auslösen. Alles dank Abstraktion.

0
aktenschweng939 
Fragesteller
 09.02.2023, 23:36
@R4c1ngCube

Ich hab auch deine andere Antwort gelesen, das alles hört sich wirklich höchst interessant an, da ich aber heute erst gelernt habe was Bits grob überhaupt sind ist das alles sehr schwer zu verstehen haha. Hast du das alles durch ein Studium gelernt ? Ich würde gerne mehr über das alles erfahren aber im Internet finde ich nicht viel dazu

0
R4c1ngCube  09.02.2023, 23:51
@aktenschweng939

Einiges habe ich im Studium gelernt, einiges auch schon davor.

Man kann das nicht mal so eben von heute auf morgen lernen. Wenn man es wirklich verstehen will, dauert das Tage oder Wochen.

Deshalb hast du vermutlich auch das Gefühl nicht wirklich etwas zu finden - es sind eher Bücher die man lesen muss als einzelne Artikel

Ich kann nicht wirklich etwas empfehlen, da ich es ohne Bücher gelernt habe, aber möglicher Weise hier Kapitel 2 und 3:

https://openbook.rheinwerk-verlag.de/it_handbuch/02_001.html#dodtp405c6069-7f32-4631-aa45-de32885cafcb

(Und bei Interesse auch die restlichen)

1

Kurz erklärt: Der Computer erstellt die Information 0 und 1 aus einem Schalter im Stromkreis. Die Entwickler von Computern haben fest vereinbart, was jede Folge von 8 Nullen und Einsen bedeuten soll.

So steht 0100 0001 für das "A", es gibt noch andere Vereinbarungen.

Lang erklärt: Schalter offen = kein Strom, Schalter zu = Strom fließt. Wenn der Schalter zu ist, leuchtet z.B. eine Glühlampe. Das wird in der "Schaltersprache" (dem Binärcode) mit "1" dargestellt.

Damit der Schalter nicht manuell geschaltet werden muss, verwendet man ein elektronisches Bauteil: Den Transistor.

Der Transistor ist ein elektrisch betätigter Schalter und hat drei Anschlüsse. Zwischen dem Transistor Eingang und Ausgang ist ein dritter Anschluss: Ein Schaltkontakt, der als elektrische Hand funktioniert. Gibt man Strom auf den Schaltkontakt, ist der Schalter geschlossen und am Ausgang kommt Strom raus ("Lampe an" oder "1")

Schließt man am Transistorausgang den Schaltkontakt eines weiteren Transistors an, kann man zwei Lampen schalten. Durch sinnvolles Kombinieren der Ein-, Aus- und Schaltkontakte lässt sich nicht nur eine Kette von Schaltern bauen, sondern auch eine ganzes Netz von Schaltern nebeneinander bauen: Der Mikroprozessor.

Der Entwickler der Prozessoren legt fest, was 0 und 1 (Bit) hintereinander in einer Reihe von 8 Bit (= 1 Byte) bedeuten. Eine 0/1 steht für an/aus, ja/nein oder wahr/falsch, somit einen Zustand oder eine Antwort. Eine Abfolge von Zuständen nennt man Programm.

Damit eine Schaltung im Mikroprozessor sinnvoll zu gebrauchen ist, schließt man am Eingang echte Schalter wie z.B. Tastatur und Maus oder elektrische Schalter (Sensoren) an, die auf Strom (Funk, Internet), Licht (Maus), Schall (Mikrofon), Druck (Waage), Feuchte (Wetterstation) oder Magnetismus (Festplatte) reagieren.

Am Ausgang werden LED-Lämpchen (Bildschirme), Lautsprecher oder weitere Mikroprozessoren (Internet) angeschlossen. Was der Computer mit den Strom am Eingang machen soll und was er ausgibt, ist im Programm festgelegt.

Woher ich das weiß:Studium / Ausbildung
wie wird bestimmt was jetzt genau diese Abfolge von zb 5Bytes an Information überliefert

Man definiert es.
Die Buchstaben, die ich verwende, sind ja auch nicht aus sich heraus eine Information, sondern wir haben irgendwann gelernt, welche Buchstabenfolge was bedeutet. Und wir verwenden auch nur 36 Buchstaben, die wir immer wieder in anderen Abfolgen zusammensetzen.

Genauso auch in der Informatik.
Wenn ein Programm mit Zahlen arbeitet, dann schreibt es diese Zahlen binär irgendwo hin und hat damit definiert: Dort stehen Zahlen mit diesem und jenem Format.
Wenn es hinterher diese Zahlen wieder lesen muss, ist der Code so geschrieben, dass er exakt diese Zahlen mit exakt diesem Format lesen kann. Andere Formate würden zu einem Fehler führen.
Wenn ein anderes Programm das versucht zu lesen und nicht weiß, was da steht, oder was anderes hin schreibt, dann führt das zu Fehlern. Und das kommt ziemlich sicher oft genug vor, wenn irgendwelche Entwickler schlampig gearbeitet haben oder durch irgendeinen anderen Fehler was schief gegangen ist.

Es gibt natürlich auch Formate, die kann man aus sich heraus erkennen, dann aber auch nur, weil irgendwer definiert hat, wie das Format auszusehen hat und dass das einen bestimmten Indikater hat (z.B. bei Zeichensätzen die BOM). Der Code, der das vearbeitet, prüft dann auf bekannte Formate prüft und nimmt den Treffer, der am besten passt.

Bei zig GB Daten kannst Du natürlich nicht sagen, dass diese Abfolge von 8.589.934.592 Bits (an vs. aus) diesen Text bedeutet. Das Programm, was diese Daten vearbeitet, weiß, welches Format es erwartet und dieses Format besteht dann wieder aus mehreren kleinen Formaten und so weiter. Ein einfacher Freitext mit ASCII besteht z.B. aus beliebig vielen Bytes, jedes Byte ist 8 Bit lang und so kann man von vorne bis hinten durch gehen und jedes Byte im Zeichensatz nachschauen, welches Zeichen es bedeutet. UTF8 (auch ein Zeichensatz) ist da schon deutlich komplexer, weil es deutlich mehr Zeichen unterstützt (mehr, als mit einem Byte möglich sind), dabei aber versucht, Speicherplatz zu sparen. Aber am Ende bleibt es das gleiche: Vorne fängst Du an, die erste Abfolge ist ein Zeichen, der Zeichensatz definiert, wie das Zeichen aussehen soll und damit auch, wo es endet, dann schaust Du dir das nächste Zeichen an und so weiter.


aktenschweng939 
Fragesteller
 09.02.2023, 23:48

Mit Format meinst du, wie unterschiedliche Programme mit zb dieser EINEN Abfolge von 0 und 1 umgeht ? Hab heute erst erfahren dass Bits überhaupt existieren. Ist also alles etwas schwer zu schlucken

0
Palladin007  10.02.2023, 00:58
@aktenschweng939

Die Formate sind global definiert, grundelegende Formate sind technisch bedingt, abstraktere Formate werden durch die Programmiersprachen oder übergreifend als Standard definiert.

Z.B. die Zahl 175 = 10101111
Das ist so definiert und basiert auf einer Berechnung, die man theoretisch beliebig weit fortgesetzen kann. Das Programm muss nur wissen: Da beginnt eine Zahl mit dieser bestimmten Länge.
Oder es weiß: Dort beginnt eine Zahl mit dieser bestimmten Länge und danach folgen soundso viele weitere Zahlen mit der selben Länge, das ist dann ein Array, also eine Abfolge von mehreren Zahlen.

Und das Programm selber setzt dann vieles davon zu großeren Formaten zusammen, definiert das wiederum als Datentyp und setzt das wieder in größeren Formaten zusammen und so weiter.

Ich muss da meist nicht viel tun, vieles nimmt die Programmiersprache bzw. der Compiler ab, ich definiere die Struktur, aber das tatsächliche Übersetzen in Bytes und Bits und das Schreiben bzw. Lesen passiert auf dieser von mir geschrieben Struktur. Nur dadurch ist es überhaupt realistisch möglich, so riesige Programme zu entwickeln.

0
aktenschweng939 
Fragesteller
 10.02.2023, 14:54
@Palladin007

Würde das dann heißen, dass ein zb. 30Byte großes Programm wirklich für jede einzelne Abfolge von 0 - bis 2 hoch 30byte etwas definiert hat ? Also wirklich für jede mögliche Kombination

0
Palladin007  10.02.2023, 18:12
@aktenschweng939

Nein, nur für die Datentypen, die es braucht.
Und die setzen sich wieder aus anderen Datentypen zusammen.

Das Programm liest also nur die Grund-Datentypen in der Reihenfolge, wie es vom Programmierer definiert wurde.

Wie die Buchstaben in einem Text, ich schreibe die Buchstaben einzeln, allein für sich sind sie ziemlich unnütz, aber als Text transportiere sie eine Information.

0

Wenn es um die Rechenoperationen im Rechner selbst geht: Der rechnet im Dualsystem, dem reichen zwei unterscheidbare Zustände eines Signals.

Wenn es um die Übertragung von Informationen geht, kann man ein Verfahren nutzen, das schon vor dem zweiten Weltkrieg bei den Fernschreibern verwendet hat:

Es wird eine Bitzeit festgelegt, also die Zeit in der man ein Bit senden möchte. Das waren damals 100 ms, heute im Mikrosekundenbereich.

Normalerweise fließt der Strom. Dann unterbricht der Sender den Strom für eine Bitzeit. Damit weiß der Empfänger, dass gleich Daten kommen. Dann werden 8 (früher 5) Bit gesendet. Danach folgt eine Pause von einem (früher 1,5) Bit, wo der Strom wieder fließt. Danach folgt das nächste Byte.

Computer sind unfassbar komplex und daher schwer in wenigen Sätzen zu erklären. Ich versuche es mal trotzdem.

Stell dir einen Computer vor, wie eine Blackbox. Diese hat Eingangsleitungen und Ausgangsleitungen. Von den Ausgangsleitungen sind einige mit den Eingangsleitungen verbunden.

Ein Computer arbeitet schrittweise. In jedem Schritt fließt der Strom der an den Eingängen anliegt in die Blackbox und versorgt verschiedene elektrische Bauteile mit Strom. Diese sorgen dafür dass manche der Ausgangsleitungen mit Strom versorgt werden.

Dieser Zustand der Ausgangsleitungen wird dann im nächsten Verarbeitungsschritt wieder als Eingang in den PC geleitet. (Es befinden sich also auch Komponenten im PC die sozusagen den Strom an den Ausgängen speichern/erneuern)

Auf diese Weise arbeitet ein Computer vor sich hin. Das Verhalten bei welchen Eingängen welche Ausgänge erzeugt werden, beschreibt das gesamte Verhalten des Computers und kann tabellarisch dargestellt werden.

Bild zum Beitrag

Das wäre z.B. ein Zähler, der immer 2>12>8>3 etc. zählt und dann von vorne beginnt.

Jetzt könnte man die Schaltung so konfigurieren, dass statt nur zu zählen immer aus einem Speicher die Speicherzelle 2/12/8/3 etc. gelesen wird. Der Speicherinhalt wird dann wieder als Input für eine andere Blackbox verwendet (~ Maschinenbefehl fetchen und ausführen)

Die Verarbeitung innerhalb der Blackbox passiert mit Hilfe von Transistoren mit denen man wiederum Logik-Komponenten umsetzt.

Ein Transistor ist ganz einfach eine Komponente mit 2 Inputs und einem Output. Liegt an beiden Inputs ein bestimmter Input an, wird ein bestimmter Output weitergegeben. Davon kombiniert man aber Millionen Stück um ein komplexeres Schaltverhalten zu erzeugen.

 - (Computer, Informatik, bits)