Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
gf_informatik:zahlensysteme:binary_solutions [2026-03-31 06:00] – [Umwandlung Binär-Dezimal] hofgf_informatik:zahlensysteme:binary_solutions [2026-04-02 09:54] (aktuell) – [Umwandlung Dezimal-Binär] hof
Zeile 1: Zeile 1:
 ## Binärzahl-Operationen mit Python ## Binärzahl-Operationen mit Python
-<html><script type="module" src="https://bottom.ch/ksr/ed/bottom-editor.js"></script></html> +<html><script type="module" src="https://bottom.ch/editor/latest/bottom-editor.js"></script></html>
 ### Umwandlung Binär-Dezimal ### Umwandlung Binär-Dezimal
  
 Nehmen wir `b = '101010'` als Beispiel. Jede Ziffer in diesem String steht an einer bestimmten Position: Nehmen wir `b = '101010'` als Beispiel. Jede Ziffer in diesem String steht an einer bestimmten Position:
-Ziffer    | 1   | 1  |    | +Position  |  `0`  `1` |  `2` |  `3` |  `4` |  `5` 
-Position   1  |     |+Ziffer    |  `1` |  `0` |  `1` |  `0` |  `1` |  `0` |
  
 Um die Binärzahl in eine Dezimalzahl umzurechnen, müssen wir potenzieren: Um die Binärzahl in eine Dezimalzahl umzurechnen, müssen wir potenzieren:
Zeile 12: Zeile 11:
  
 Zu jeder Ziffer gehört also die passende Zweierpotenz: Zu jeder Ziffer gehört also die passende Zweierpotenz:
-Ziffer    | 1   | 1  |    | +Position  |  `0`  `1` |  `2` |  `3` |  `4` |  `5` 
-Position  | 0     4  | 5  | +Ziffer    |  `1`   `0` |  `1|  `0` |  `1` |  `0` 
-^ Exponent  | 5  | 4  |     +^ Exponent      `5  `4` |  `3` |  `2` |  `1` |  `0
-^ Potenz    | 32  | 16  |     |+^ Potenz    |     `32 `16` |  `8` |  `4` |  `2` |  `1|
  
 Die Schwierigkeit bei diesem Code ist, dass **Position und Exponent genau gegenteilig sind**: Die Position startet bei $0$ und zählt hoch, der Exponent startet bei $5$ und zählt herunter. Die Schwierigkeit bei diesem Code ist, dass **Position und Exponent genau gegenteilig sind**: Die Position startet bei $0$ und zählt hoch, der Exponent startet bei $5$ und zählt herunter.
Zeile 23: Zeile 22:
    1. **Zwei separate Variablen**: Eine für die Position und eine für den Exponenten.    1. **Zwei separate Variablen**: Eine für die Position und eine für den Exponenten.
    2. **Binärstring umkehren**, also aus `'101010'` wird `'010101'`: Jetzt stimmen Position und Exponent überein. [[.:binary_collection#rueckwaerts|Hier]] hat es Ideen.    2. **Binärstring umkehren**, also aus `'101010'` wird `'010101'`: Jetzt stimmen Position und Exponent überein. [[.:binary_collection#rueckwaerts|Hier]] hat es Ideen.
-   3. Lösung unten: das Zwischenresultat wird **fortlaufend mit 2 multipliziert**.+   3. Das Zwischenresultat wird **fortlaufend mit 2 multipliziert**.
  
 <nodisp 1> <nodisp 1>
 ++++Lösung| ++++Lösung|
  
-<html><bottom-editor style="min-height: 6lh">def binary_to_decimal(b):+<html><bottom-editor session="page"> 
 +def binary_to_decimal(b):
     """Wandelt Binärzahl b in Dezimalzahl um."""     """Wandelt Binärzahl b in Dezimalzahl um."""
     d = 0     d = 0
 +    exponent = len(b) - 1
     for digit in b:     for digit in b:
-        d = d*2 
         if digit == '1':         if digit == '1':
-            d = d + 1+            d = d + 2**exponent 
 +        exponent = exponent - 1
     return d     return d
  
-print(binary_to_decimal("101010"))</bottom-editor></html>+print(binary_to_decimal("101010")) 
 +</bottom-editor></html>
 ++++ ++++
-</nodisp +</nodisp>
->+
 ### Umwandlung Dezimal-Binär ### Umwandlung Dezimal-Binär
  
Zeile 47: Zeile 48:
 <nodisp 1> <nodisp 1>
 ++++Lösung| ++++Lösung|
-<html><bottom-editor>+<html><bottom-editor session="page">
 def decimal_to_binary(d): def decimal_to_binary(d):
     """Wandelt Dezimalzahl mit dem Restwertalgorithmus in Binärzahl um."""     """Wandelt Dezimalzahl mit dem Restwertalgorithmus in Binärzahl um."""
Zeile 61: Zeile 62:
 ++++ ++++
 </nodisp> </nodisp>
 +
 ### Binär-Addition ### Binär-Addition
 Umsetzungsidee: Umsetzungsidee:
Zeile 72: Zeile 74:
 <nodisp 2> <nodisp 2>
 ++++Lösung| ++++Lösung|
-<html><bottom-editor>+<html><bottom-editor session="page">
 def fill_zeros(b, digits): def fill_zeros(b, digits):
     while len(b) < digits:     while len(b) < digits:
Zeile 111: Zeile 113:
 <nodisp 2> <nodisp 2>
 ++++Lösung| ++++Lösung|
-<code python>+<html><bottom-editor session="page">
 def invert(b): def invert(b):
     """Erstellt einen neuen String, wobei 0en und 1en vertauscht sind."""     """Erstellt einen neuen String, wobei 0en und 1en vertauscht sind."""
Zeile 137: Zeile 139:
     result = result[-stellen: # Vorderstes Bit auslassen     result = result[-stellen: # Vorderstes Bit auslassen
     return result     return result
-</code>+</bottom-editor></html>
 ++++ ++++
 </nodisp> </nodisp>
Zeile 145: Zeile 147:
 Kopiere alle Funktionen oben in die gleiche Python-Datei. Überprüfe danach die Funktionsweise: Kopiere alle Funktionen oben in die gleiche Python-Datei. Überprüfe danach die Funktionsweise:
  
-<code python>+<html><bottom-editor session="page">
 a_dec = 42 a_dec = 42
 b_dec = 19 b_dec = 19
Zeile 153: Zeile 155:
 difference_dec = binary_to_decimal(difference_bin) difference_dec = binary_to_decimal(difference_bin)
 print(f"{a_dec} - {b_dec} = {a_bin} - {b_bin} = {difference_bin} = {difference_dec}") print(f"{a_dec} - {b_dec} = {a_bin} - {b_bin} = {difference_bin} = {difference_dec}")
-</code>+</bottom-editor></html>
  
 Resultat: Resultat:
  • gf_informatik/zahlensysteme/binary_solutions.1774936843.txt.gz
  • Zuletzt geändert: 2026-03-31 06:00
  • von hof