Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
| Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
| gf_informatik:zahlensysteme:binary_solutions [2025-05-12 09:59] – [Binär-Addition] hof | gf_informatik:zahlensysteme:binary_solutions [2025-05-17 08:12] (aktuell) – [Ausprobieren] hof | ||
|---|---|---|---|
| Zeile 65: | Zeile 65: | ||
| print(binary_add(" | print(binary_add(" | ||
| + | ### Binär-Subtraktion | ||
| + | |||
| + | <code python> | ||
| + | def invert(b): | ||
| + | """ | ||
| + | result = "" | ||
| + | for digit in b: | ||
| + | if digit == " | ||
| + | result = result + " | ||
| + | else: | ||
| + | result = result + " | ||
| + | return result | ||
| + | |||
| + | def zweierkomplement(b, | ||
| + | """ | ||
| + | # 1) Auffüllen auf stellen bits | ||
| + | b = fill_zeros(b, | ||
| + | # 2) Invertieren (1->0, 0->1) | ||
| + | b = invert(b) | ||
| + | # 3) Addiere 1 | ||
| + | return binary_add(b, | ||
| + | |||
| + | def binary_subtraction(a, | ||
| + | """ | ||
| + | complement = zweierkomplement(b, | ||
| + | result = binary_add(a, | ||
| + | result = result[-stellen: | ||
| + | return result | ||
| + | </ | ||
| + | |||
| + | ### Ausprobieren | ||
| + | |||
| + | Kopiere alle Funktionen oben in die gleiche Python-Datei. Überprüfe danach die Funktionsweise: | ||
| + | |||
| + | <code python> | ||
| + | a_dec = 42 | ||
| + | b_dec = 19 | ||
| + | a_bin = decimal_to_binary(a_dec) | ||
| + | b_bin = decimal_to_binary(b_dec) | ||
| + | difference_bin = binary_subtraction(a_bin, | ||
| + | difference_dec = binary_to_decimal(difference_bin) | ||
| + | print(f" | ||
| + | </ | ||
| + | |||
| + | Resultat: | ||
| + | < | ||
| + | 42 - 19 = 101010 - 10011 = 00010111 = 23 | ||
| + | </ | ||
| + | |||