Загрузка данных


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))