def f(n, s):
sn = ""
while n != 0:
sn = str(n % s) + sn
n = n // s
return sn
def frac_to_bin(frac, digits):
result = ""
for i in range(digits):
frac = frac * 2
bit = int(frac)
result = result + str(bit)
frac = frac - bit
return result
# a) 639
print("a)", f(639, 2), f(639, 8), f(639, 16))
# б) 485
print("б)", f(485, 2), f(485, 8), f(485, 16))
# в) 581.25
print("в)", f(581, 2) + "," + frac_to_bin(0.25, 4),
f(581, 8) + "," + frac_to_bin(0.25, 3),
f(581, 16) + "," + frac_to_bin(0.25, 1))
# г) 673.5
print("г)", f(673, 2) + "," + frac_to_bin(0.5, 4),
f(673, 8) + "," + frac_to_bin(0.5, 3),
f(673, 16) + "," + frac_to_bin(0.5, 1))
# д) 296.33 — нужно 5 знаков после запятой в двоичном
print("д)", f(296, 2) + "," + frac_to_bin(0.33, 5))