def binary_to_decimal(b): """Wandelt Binärzahl b in Dezimalzahl um.""" d = 0 for digit in b: d = d*2 d = d + int(digit) return d print(binary_to_decimal("101010"))

Restwertalgorithmus: def decimal_to_binary(d): """Wandelt Dezimalzahl mit dem Restwertalgorithmus in Binärzahl um.""" b = "" while d > 0: r = d % 2 d = d // 2 b = str(r) + b return b print(decimal_to_binary(42))

def fill_zeros(b, digits): while len(b) < digits: b = "0" + b return b def binary_add(a,b): """Addiert zwei Binärzahlen beliebiger Länge.""" n = max(len(a), len(b)) a = fill_zeros(a, n) b = fill_zeros(b, n) out = "" carry = 0 index = n - 1 while index >= 0: digit_a = int(a[index]) digit_b = int(b[index]) sum = digit_a + digit_b + carry if sum == 0: out = "0" + out carry = 0 elif sum == 1: out = "1" + out carry = 0 elif sum == 2: out = "0" + out carry = 1 elif sum == 1: out = "1" + out carry = 1 index = index - 1 if carry != 0: out = str(carry) + out return out print(binary_add("101010", "10111"))

def invert(b):
    # Erstellt einen neuen String, wobei 0en und 1en vertauscht sind.
    result = ""
    for digit in b:
        if digit == "0":
            result = result + "1"
        else:
            result = result + "0"
    return result
 
def zweierkomplement(b, stellen=8):
    # 1) Auffüllen auf stellen bits
    b = fill_zeros(b, stellen)
    # 2) Invertieren (1->0, 0->1)
    b = invert(b)
    # 3) Addiere 1
    return binary_add(b, "1")
 
def binary_subtraction(a, b, stellen=8):
    complement = zweierkomplement(b, stellen)
    result = binary_add(a, complement)
    result = result[-stellen:]  # Vorderstes Bit auslassen
    return result
  • gf_informatik/zahlensysteme/binary_solutions.1747469219.txt.gz
  • Zuletzt geändert: 2025-05-17 08:06
  • von hof