Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
restrepo
GitHub Repository: restrepo/ComputationalMethods
Path: blob/master/homework/homework_2018_1_01_1035441007.ipynb
934 views
Kernel: Python 3
def Binario(bs): #Importamos numpy y sys import numpy as np import sys #Verificamos que se halla ingresado un binario de 32 bits if len(bs)!=32: print ("Error, el binario debe tener 32 caracteres") return False sys.exit() #Si la condición anterior se cumple, entonces bs=bs.astype(int) #Invertimos el arreglo así es más fácil implementar la fórmula sb=bs[::-1] #Tomamos ciertos segmentos del arreglo: #s es el correspondiente al signo, #e es el correspondiente al exponente, #f es el correspondiente a la fracción. s=sb[31:32] f=sb[:23] e=sb[23:31] #Creamos la variable 'fe' que es la correspondiente a los i-ésimos términos #y así pues hallamos el producto punto tras hallar el término 2^i fe=np.arange(0,8,1) ep = np.exp2(fe) #'exp' es el resultado correspondiente a la sumatoria del exponente exp=np.dot(e,np.exp2(fe)) #Creamos 'ff' puesto que el término de la sumatoria me decrece, lo que equivale a usar la cadena original #Además es necesario crear otro arreglo que vaya desde i=1 hasta i=23 para eso creamos 'ff2' #también creamos la variable 'efra' que es -ff2' aplicándole exponencial ff=f[::-1] ff2=np.arange(1,24,1) efra= (np.exp2(-ff2)) #'frac' es el producto punto que equivale a la sumatoria frac=np.dot(ff,efra) #Ahora pues, llamemos 'r' el real que buscamos y apliquemos la fórmula r=((-1)**s)*(1+frac)*2**(exp-127) r=r[0] return (r)
import numpy as np bs=np.array(list(input("ingrese su binario de 32 bits "))) real=Binario(bs) print('Su binario de 32 bits equivale al número real {}'.format(real))
ingrese su binario de 32 bits 32 Error, el binario debe tener 32 caracteres Su binario de 32 bits equivale al número real False
# ELABORADO POR NATALIA ALVAREZ CC 1.035.441.007