Binair#
Functie 1#
Schrijf een Python functie is_odd(n) die als argument een integer n accepteert, en True teruggeeft als n oneven is en False als n even is. Zorg ervoor dat je deze (boolean) waarden teruggeeft, niet strings! De even- of onevenheid van een getal noemen we zijn pariteit.
def is_odd(n):
return n % 2 == 1
Functie 2#
In dit onderdeel ga je getallen bit voor bit,van rechts naar links van decimaal naar binair omzetten, wat misschien “even” raar zal klinken…!
def num_to_binary(n):
result = ""
while n > 0:
if is_odd(n):
result = "1" + result
n = n // 2
else:
result = "0" + result
n = n // 2
return result
Functie 3#
Nu ga je het meer uitdagende probleem aanpakken om van grondtal 2 naar grondtal 10 te gaan, opnieuw van rechts naar links. We stellen een waarde met grondtal 2 voor als een reeks van 0’en en 1’en (bits).
def binary_to_num(s):
result = 0
for i in range(0, len(s)):
result = result + (int(s[-1]) * 2 ** i)
s = s[:-1]
return result
Functie 4#
In het kort, schrijft increment(S), die een binaire string s met 0’en en 1’en accepteert en het volgende getal in grondtal 2 teruggeeft.
def increment(s):
n = binary_to_num(s)
n = n + 1
result = num_to_binary(n)
if len(result) > 8:
return 8 * "0"
else:
return (8 - len(result)) * "0" + result
Functie 5#
Gebruik de functie increment om de functie count(s, n) te schrijven, die een binaire string van 8 tekens accepteert als argument en vervolgens n keer doortelt vanaf s, terwijl hij wordt afgedrukt.
def count(s, n):
print(s)
for _ in range(0, n):
s = increment(s)
print(s)
Functie 6#
Scrijf de functie ternary_to_num(s), die een integer representatie teruggeeft van de waarde van het argument s (net als binary_to_num).
def ternary_to_num(s):
result = 0
for i in range(0, len(s)):
result = result + (int(s[-1]) * 3 ** i)
s = s[:-1]
return result