Scratch programmieren?
Hallo, kann mir wer sagen wie man auf der Programmierseite „Scratch“ das so macht dass man zwei binärzahlen addiert und das Ergebnis auch als binärzahl rauskommt?
Könnte mir dies bitte jemand schicken in einer Scratch Implementierung.
Danke im Vorraus:)
Liebe Grüße
2 Antworten
Ich denke mal du wirst dir da selbst etwas schreiben müssen? Soweit ich das sehe gibt es keine vorgegebenen Binärblöcke.
An und für sich sollte das nicht allzu schwer sein. Zuerst müsstest du dir überlegen, wie du die Binärzahlen repräsentierst, da du keinen Binärtyp hast.
Am besten stellst du Binärzahlen wohl als Dezimalzahlen dar. Etwa folgendermaßen:
0_2 = 0_10 gespeichert als 0_10 (null)
1_2 = 1_10 gespeichert als 1_10 (eins)
10_2 = 2_10 gespeichert als 10_10 (zehn)
11_2 = 3_10 gespeichert als 11_10 (elf)
Für's erste beschränkst du dich auf positive Zahlen. negative Zahlen sind etwas komplizierter.
Für die Addition nimmst du immer zwei Ziffern, schaust ob diese 0 oder 1 sind und berechnest damit das Ergebnis für die Stelle und den Überlauf:
1001 + 0011:
100>1 + 001>1 + c (Überlauf) = 0; c=1
10>01 + 00>11 + >1 = 0; c=1
1>001 + 0>011 + >1 = 1; c=0;
>1001 + >0011 + >0 = 1; c=0;
Ergebnis: 1100;
Die Ziffer an der Stelle erhälst du mit der "Zeichen ... von ..."-Funktion. Die Länge mit der "Länge von ..."-Funktion.
Um das Ergebnis zusammenzusetzen addierst du für die niederwertigste Ziffer (also von hinten gezählt) 0/1, für die zweite 0/10, für die dritte 0/100, ...
Nein, Scratch verschicken ist auf dieser Plattform nicht so einfach möglich.
Was bei einer binären Addition passiert ist nicht so kompliziert. Von der letzten Stelle ausgehen, addierst Du jeweils die zwei stellen. Wenn beide 0 sind, ist das Resultat 0, wenn eins von beiden 1 ist, ist das Resultat 1, wenn beide 1 sind, dann gibt es einen Übertrag.
Ähnlich gehst Du dann bei der nächsten Stelle vor, beziehst aber den Übertrag mit ein.
Du hast die Möglichkeit, bis zu 3 einser (die zweitletzte Stelle beider Zahlen sowie eventuell den Übertrag). Hast also wieder eventuell einen Übertrag.
Etc. bis beide Zahlen verarbeitet sind.
Ich habe das einmal implementiert für einen einfachen Fall. Ich habe es hier hochgeladen:
http://destra.uber.space/files/Scratch_binary_add.sb3
(Für Leser, die dies lesen, nachdem die Datei nicht mehr online ist, bitte anfragen, vielleicht habe ich de dann noch rumliegen.)
Scheint aber zu funktionieren, Voraussetzung gerade ist aber noch, dass die Zahlen gleich lang sind, man vorne also alles mit 0en auffüllt bis die Länge passt.
Hey danke:) allerdings muss man 2 zahlen eingeben, wie kann man das denn dann machen? Also mit frage binärzahl: und dann soll der Nutzer die binärzahl eingeben die er ausgerechnet haben möchte.
Hättest du eine Idee wie man das so machen kann?
Siehe meinen Kommentar von gerade. (Muss dir extra einen Kommentar dafür schreiben, sonst bekommst du keine Nachricht, dass ein neuer Kommentar erschienen ist.)
Könntest du bitte einfach einen Screenshot vom fertigen Scratch Programm schicken😊?