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 [2023-05-31 09:20] – [Lösungen] sca | gf_informatik:zahlensysteme [2023-06-06 21:30] (aktuell) – [Lösungen] sca | ||
---|---|---|---|
Zeile 99: | Zeile 99: | ||
===== Lösungen ===== | ===== Lösungen ===== | ||
- | |||
- | <nodisp 1> | ||
++++Binary to Decimal| | ++++Binary to Decimal| | ||
Zeile 150: | Zeile 148: | ||
<code python> | <code python> | ||
+ | |||
def binary_add(b1, | def binary_add(b1, | ||
+ | b1 = b1.replace(" | ||
+ | b2 = b2.replace(" | ||
# make sure strings have same length | # make sure strings have same length | ||
while len(b1) < len(b2): | while len(b1) < len(b2): | ||
Zeile 178: | Zeile 179: | ||
summe = ' | summe = ' | ||
return summe | return summe | ||
+ | |||
def invert(b): | def invert(b): | ||
+ | b = b.replace(" | ||
inv = "" | inv = "" | ||
i = 0 | i = 0 | ||
Zeile 189: | Zeile 191: | ||
i = i + 1 | i = i + 1 | ||
return inv | return inv | ||
+ | |||
def complement(b): | def complement(b): | ||
+ | b = b.replace(" | ||
b = invert(b) | b = invert(b) | ||
b = binary_add(b,' | b = binary_add(b,' | ||
return b | return b | ||
+ | |||
def binary_sub(b1, | def binary_sub(b1, | ||
+ | b1 = b1.replace(" | ||
+ | b2 = b2.replace(" | ||
# make sure strings have same length | # make sure strings have same length | ||
while len(b1) < len(b2): | while len(b1) < len(b2): | ||
Zeile 201: | Zeile 206: | ||
while len(b1) > len(b2): | while len(b1) > len(b2): | ||
b2 = ' | b2 = ' | ||
- | | + | |
# add additional zero at left (to distinguish between positive and negative numbers) | # add additional zero at left (to distinguish between positive and negative numbers) | ||
b1 = ' | b1 = ' | ||
b2 = ' | b2 = ' | ||
- | | + | |
result = binary_add(b1, | result = binary_add(b1, | ||
result = result[1:] # remove first bit | result = result[1:] # remove first bit | ||
| | ||
- | while result[0] == ' | + | while len(result) > 1 and result[0] == ' |
result = result[1:] | result = result[1:] | ||
+ | return result | ||
+ | |||
+ | def binary_mul(b1, | ||
+ | b1 = b1.replace(" | ||
+ | b2 = b2.replace(" | ||
+ | result = "" | ||
+ | | ||
+ | i = len(b1) - 1 | ||
+ | while i >= 0: | ||
+ | if b1[i] == ' | ||
+ | result = binary_add(result, | ||
+ | b2 = b2 + ' | ||
+ | i = i - 1 | ||
+ | | ||
+ | while len(result) > 1 and result[0] == ' | ||
+ | result = result[1:] | ||
+ | |||
return result | return result | ||
</ | </ | ||
Zeile 216: | Zeile 238: | ||
++++ | ++++ | ||
- | </ | ||
Zeile 331: | Zeile 352: | ||
</ | </ | ||
++++ | ++++ | ||
+ | |||
+ | ++++Function Testing| | ||
+ | |||
+ | <code python> | ||
+ | ### FUNCTION TESTING CODE | ||
+ | for i in range(1000): | ||
+ | da = random.randint(0, | ||
+ | db = random.randint(0, | ||
+ | if db > da: da,db = db,da | ||
+ | a = bin(da)[2:] | ||
+ | b = bin(db)[2:] | ||
+ | if not a == invert(invert(a)): | ||
+ | print(" | ||
+ | | ||
+ | if not binary_add(a, | ||
+ | print(" | ||
+ | | ||
+ | if not binary_sub(a, | ||
+ | print(" | ||
+ | </ | ||
+ | ++++ | ||
+ | |||
+ | ++++Exercise Generator| | ||
+ | <code python> | ||
+ | ### EXERCISE GENERATOR | ||
+ | for i in range(3): | ||
+ | da = random.randint(128, | ||
+ | db = random.randint(128, | ||
+ | if db > da: da,db = db,da | ||
+ | a = bin(da)[2:] | ||
+ | b = bin(db)[2: | ||
+ | print(" | ||
+ | print(" | ||
+ | |||
+ | for i in range(3): | ||
+ | da = random.randint(128, | ||
+ | a = bin(da)[2:] | ||
+ | print(" | ||
+ | print(" | ||
+ | |||
+ | for i in range(3): | ||
+ | da = random.randint(128, | ||
+ | db = random.randint(128, | ||
+ | if db > da: da,db = db,da | ||
+ | a = bin(da)[2:] | ||
+ | b = bin(db)[2: | ||
+ | print(" | ||
+ | print(" | ||
+ | |||
+ | for i in range(3): | ||
+ | da = random.randint(1, | ||
+ | db = random.randint(1, | ||
+ | if db > da: da,db = db,da | ||
+ | a = bin(da)[2:] | ||
+ | b = bin(db)[2:] | ||
+ | while len(a) < 4: a = ' | ||
+ | while len(b) < 4: b = ' | ||
+ | print(" | ||
+ | print(" | ||
+ | </ | ||
+ | ++++ | ||
+ | |||
+ | |||
</ | </ | ||