Zahlensysteme

binary_arithmetics.py
#  "101" auf 4 Bit -> "0101"
def gegenzahl(b, stellen):
    # 1. gewünschte Anzahl bits
    while len(b) < stellen:
        b = "0" + b
 
    # 2. Bits invertieren (0->1, 1->0)
    result = ""
    for bit in b:
        if bit == "0":
            result = result + "1"
        else:
            result = result + "0"
 
    # 3. plus 1
    return addition(result, "1")
 
def addition(one, two, stellen=4):
    # sicherstellen, dass beide Zahlen gleich lang sind:
    while len(one) < stellen:
        one = "0" + one
    while len(two) < stellen:
        two = "0" + two
    # repetiere Folgendes:
    #   von hinten nach vorne
    #   addieren wir ziffern paare
    #   merken uns rest -> resultat und behalte
 
    # one: "101"
 
    # 0 1 2
    # 2 1 0
    index = stellen - 1
    behalte = 0
    result = ""
    while index >= 0:
        bit_one = int(one[index])
        bit_two = int(two[index])
 
        sum = bit_one + bit_two + behalte
        rest = sum % 2
        behalte = sum // 2
 
        result = str(rest) + result        
        index = index - 1
 
    return result
 
# Returns one - two
def subtraktion(one, two):
    stellen = len(one)
    # gegenzahl von two
    komplement = gegenzahl(two, stellen)
    # .. und addieren
    return addition(one, komplement, stellen)
 
print(addition("11", "11"))
print(subtraktion("1011", "0011"))
  • gf_informatik/zahlensysteme_hof.1714898108.txt.gz
  • Zuletzt geändert: 2024-05-05 08:35
  • von hof