2017-05-18 5 views
0

Je commence juste à apprendre à coder dans Sagemath, je sais que c'est similaire à python mais je n'ai pas beaucoup d'expérience avec ça non plus.
J'essaie d'ajouter deux nombres binaires représentant des fractions. C'est-à-dire quelque chose commeRésumé des nombres binaires représentant des fractions dans Sagemath

a = '110' 
b = '011' 
bin(int(a,2) + int(b,2)) 

Mais en utilisant des valeurs représentant des fractions, telles que '1.1'.
Merci d'avance!

Répondre

0

Si vous voulez faire cela en vanille Python, l'analyse des fractions binaires à la main n'est pas trop mauvaise (la première partie étant de this answer);

def binstr_to_float(s): 
    t = s.split('.') 
    return int(t[0], 2) + int(t[1], 2)/2.**len(t[1]) 

def float_to_binstr(f): 
    i = 0 
    while int(f) != f: 
     f *= 2 
     i += 1 
    as_str = str(bin(int(f))) 
    if i == 0: 
     return as_str[2:] 
    return as_str[2:-i] + '.' + as_str[-i:] 

float_to_binstr(parse_bin('11.1') + parse_bin('0.111')) # is '100.011'