SUMA DE Y RESTA BINARIOS

SAM
20 de Febrero del 2004
AUXILIO NECESISTO UN PROGRAMA QUE ME PERMITA REALIZAR LA SUMA Y RESTA DE DOS NUMERO BINARIOS
INGRESO LA CANTIDAD EN BINARIOS Y ME TIENE QUE DAR LA RESPUESTA EN BINARIOS AYUDENME ES URGENTE

albertoblanco
20 de Febrero del 2004
Creo que funciona bien. Prueba esto:

'*****************************************************
'* Suma dos numeros binarios y devuelve el resultado
'* (los numeros binarios max. de dos bytes (16 bits)
'*****************************************************
Private Function SumaBinario(Num1 As String, Num2 As String) As String
Dim N1 As Long
Dim N2 As Long

N1 = BinarioADecimal(Num1)
N2 = BinarioADecimal(Num2)

SumaBinario = DecimalABinario(N1 + N2)
End Function

'**************************************************
'* Pasa de binario a decimal una cadena
'* El numero binario tiene el bit 0 a la derecha
'**************************************************
Private Function BinarioADecimal(N As String) As Long
Dim a As Long
Dim NumBit As Long
Dim Dec As Long

NumBit = 0
Dec = 0
For a = Len(N) To 1 Step -1
If Mid(N, a, 1) = "1" Then Dec = Dec + (2 ^ NumBit)
NumBit = NumBit + 1
Next a

BinarioADecimal = Dec
End Function


'**************************************************
'* Pasa de decimal a binario un numero
'* El numero binario tiene el bit 0 a la derecha
'**************************************************
Private Function DecimalABinario(ByVal N As Long) As String
Dim NumBit As Long
Dim Bin As String
Dim Div As Long

Bin = ""
For NumBit = 15 To 0 Step -1
If Fix(N / (2 ^ NumBit)) > 0 Then
Bin = Bin & "1"
N = N - (2 ^ NumBit)
Else
Bin = Bin & "0"
End If
Next NumBit

DecimalABinario = Bin
End Function


Ten en cuenta que estas funciones estan usando 16 bits. Si necesitas que sean más largos, cambia la funcion DecimaABinario, el bucle, en vez de 15 pon el número de bits que quieras. Ojo con los desbordamientos de los Longs si haces eso.

Espero haberte ayudado

Alberto