Umwandlung Binär-Dezimal
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"))
Umwandlung Dezimal-Binär
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"))