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