Logo Helden des Bildschirms
Zurück

Bis zum Volladdierer #1 Binär 01000010 01101001 01101110 11000011 10100100 01110010

Ich habe mir überlegt eine kleine Reihe zu machen, wo ich einen Teil von einer ALU (Arithmetisch-logische Einheit) erkläre und baue, und zwar den Halbaddierer.
Dazu gehört zumal auch etwas Verständnis was Binär eigentlich ist.
Was ein Bit (int8_t , int16_t,int32_t,int64_t Integer) und ein Byte (8 Bit) ist, Register usw.
Wie man aus einem Dezimalwert einen Binärwert rechend und umgekehrt. (Im Kopf und in CPP).
Was ein Halbleiter ist und was XOR, OR, NOP, UND (Exklusiv-Oder-Gatter) sind und was man aus ihnen schönes bauen kann.
Zum Thema Bauen, Minecraft wird es auch geben, für die Leute denen LogikSim zu eintönig ist. ;)

Also fangen wir Ersteinmal an mit Dezimal zu Binäre:
Tipp: Ihr könnt zu Unterstützung auch Excel nutzen. ;)
image.png

Also zum Beispiel wir wollen die Zahl 5 in Binäre umrechnen im Kopf oder eher von Hand.
Dafür gibt es zwei Wege, einer der schnell ist bei kleinen Zahlen und einer der genau ist und auch bei großen Zahlen funktioniert. :)
Hier der Weg der einem auch erst einmal das Prinzip verständlich macht:
Wir rechnen immer 2 und fangen bei 1 an.
1
2 = 2 * 2 = 4 usw.
1, 2, 4, 8, 16, 32, 64, 128
Jetzt drehen wir die Zahlen um damit wir von rechts nach links schreiben können.
Wir müssen jetzt nur noch die uns passende Zahlen suchen, also die 1 + die 4 ergibt die 5.
128, 64, 32, 16, 8, 4, 2, 1
0, 0, 0, 0, 0, 1, 0, 1
Also haben wir das Ergebnis 00000101.

So jetzt machen wir das mit einfacher Mathematik:
5/2 = 2,5 Notiere: 1
Wir machen aus der 2,5 eine Ganze Zahlen also 2 diese Zahl nehmen wir wieder mit 2 geteilt.
Ist die Zahl ungerade, dann notieren wir eine 1 und zwar von rechts nach links <--- . ;)
2/2 = 1 Notiere: 0
1/2 = 0,5 Notiere: 1
Wenn wir bei 0 angekommen sind erhalten wir das Ergebnis: 00000101 (Ich habe es in 8 Bit also 1 Byte geschrieben, schaut so nur etwas besser aus, nicht wundern.)

Mit einer Text(UTF-8) zu Ascii(Dezimal) Tabelle könnt ihr auch Texte in Binär übersetzen A ist zum Beispiel 65.
Das lasse ich euch aber alleine versuchen, als Ergebnis solltet ihr 01000001 erhalten.
C++ Beispiel:
https://pastebin.com/X3Yqr558

So jetzt machen wir das umgekehrt, Binär zu Dezimal.
Wir nehmen die 89(01011001), ihr könnt natürlich auch eine andere Zahl nutzen.
Wir könnten wieder die Methode von oben nutzen und einfach ablesen welche Zahl es ist.
Aber das ist jetzt zu einfach und deshalb machen wir es mit Mathematik:

image.png

1011001
Wir starten bei Null, das ist unsere erste Zahl, wir rechnen 2 und + den Übertrag die erste stelle in Binäre.
0
2 + 1 = 1
In der nächsten Runde nehmen wird das Ergebnis (die 1) und nutzen es als Startzahl.
1 2 + 0 = 2
2
2 + 1 = 5
5 2 + 1 = 11
11
2 + 0 = 22
22 2 + 0 = 44
44
2 + 1 = 89
Das geht immer so weiter bis wir am Ende das Ergebnis erhalten.

C++ Beispiel:
https://pastebin.com/NHUmDEKv

Ich hoffe, ich konnte das einigermaßen gut und verständlich erklären. :)
Im nächsten Teil geht es dann richtig los.

Soll ich für den Minecraft Teil noch ein Beispiel auf meinen Server online stellen?
Dann könnt ihr euch das vielleicht besser anschauen als über Bilder von den einzelnen Elementen. :)

Votes: up: 10 down: 027.08.2020 00:14