Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
restrepo
GitHub Repository: restrepo/ComputationalMethods
Path: blob/master/homework/Homework_2018_1_01_1032478036.ipynb
934 views
Kernel: Python 3

Tarea

Escribir, utilizando funciones de numpy, un programa que tome un número en binario y devuelva el número correspondiente

import numpy as np
def numtoBin(BIN): import sys if type(BIN)!=str: sys.exit('Error, debe ingresar el número como un str') else: binn=np.array(list(BIN)) #Convierte el str en un arreglo binn=binn.astype(int) #convierte cada entrada a entero inv=binn[::-1] #invierte el arreglo s=inv[-1] #toma la ultima posicion pot=np.arange(1,24) #crea un arreglo con numeros del 1-23 pot2=np.arange(0,8) #crea un arreglo con numeros del 0-8 r=(-1)**int(s)*(1+np.dot(np.exp2(-pot),inv[23-pot]))*2**(np.dot(inv[23+pot2],np.exp2(pot2))-127) print ('El numero binario: {}, corresponde a: {}'.format(BIN,r))
numtoBin('00111110001000000000000000000000')
def numtoBin2(BIN): import sys if type(BIN)!=str: sys.exit('Error, debe ingresar el número como un str') else: binn=np.array(list(BIN)) #Convierte el str en un arreglo binn=binn.astype(int) #convierte cada entrada a entero inv=binn[::-1] #invierte el arreglo s=inv[-1] #toma la ultima posicion pot=np.arange(1,24) #crea un arreglo con numeros del 1-23 pot2=np.arange(0,8) #crea un arreglo con numeros del 0-8 frac= 1+np.sum(np.exp2(-pot)*inv[23-pot]) #crea un arreglo de potencias de 2, las multiplica por cada entrada de inv y las suma exp=int(np.sum(inv[23+pot2]*np.exp2(pot2))) #toma como entero el valor de la suma de los arrglos r= (-1)**int(s)*frac*2**(exp-127) #aplica la formula para recuperar el numero real print ('El numero binario: {}, corresponde a: {}'.format(BIN,r))
numtoBin2('00111110001000000000000000000000')