assignment.py 959 Bytes
def single_prec(v):
    s=int(v[0]);
    e='';
    f=[];
    x=1;
    for i in range(1,len(v)):
        if i>0 and i<9:
            e+=v[i];
        else:
            f.append(v[i])
    for i in range(0,len(f)):
        y = int(f[i]);
        xx = (-1)*(i+1)
        x+=y*2**xx;
    ee = int(e,2);
    return ( (-1)**s * 2**(ee-127) *x)
        

def double_prec(v):
    s=int(v[0]);
    e='';
    f=[];
    x=1;
    for i in range(1,len(v)):
        if i>0 and i<12:
            e+=v[i];
        else:
            f.append(v[i])
    for i in range(0,len(f)):
        y = int(f[i]);
        xx = (-1)*(i+1)
        x+=y*2**xx;
    ee = int(e,2);
    return ( (-1)**s * 2**(ee-1023) *x)
   

# v = '0011111000100000000000000000000'

# s = 0
# e = int('01111100', 2)
# x = 1 + 0*2**(-1) + 1*2**(-2)
# print( (-1)**s * 2**(e-127) * x )

print(double_prec('010000000111001000010000000000000000000000000000000000000'))
print(single_prec('00000000110000000000000'))