elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Sigue las noticias más importantes de elhacker.net en ttwitter!


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | |-+  Recopilacion de Funciones con operaciones Binarias.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Recopilacion de Funciones con operaciones Binarias.  (Leído 10,433 veces)
arfgh

Desconectado Desconectado

Mensajes: 28


Ver Perfil
Re: Recopilacion de Funciones con operaciones Binarias.
« Respuesta #10 en: 20 Febrero 2012, 14:21 »

Este tópico es genial, no obstante estaría bien que pusieseis también las operaciones con bits tipo shr y shl.


En línea

BlackZeroX (Astaroth)
Wiki

Desconectado Desconectado

Mensajes: 3.184


I'Love...!¡.


Ver Perfil WWW
Re: Recopilacion de Funciones con operaciones Binarias.
« Respuesta #11 en: 4 Junio 2012, 09:34 »

Alternativa a la función Xor...

Código
  1.  
  2. Option Explicit
  3.  
  4. Private Sub Form_Load()
  5. Const a As Long = 0
  6. Const b As Long = 1
  7.    MsgBox Xor_alt(a, b) & vbCrLf & (a Xor b)
  8. End Sub
  9.  
  10. Public Function Xor_alt(ByVal n1 As Long, ByVal n2 As Long) As Long
  11.    Xor_alt = (Not n1) And n2 Or (Not n2) And n1
  12. End Function
  13.  
  14.  
  15.  

P.D.: Necesito crearle un Indice a este tema... cuando tenga tiempo libre lo haré...

Dulces Lunas!¡.


« Última modificación: 4 Junio 2012, 09:37 por BlackZeroX (Astaroth) » En línea




CScript (Actualizado 26/06/2013).

FileX <-- Re-modelando...
Web Principal-->[ Blog(VB6/C/C++) | Host File | Scan Port) ]

The Dark Shadow is my passion.
El infierno es mi Hogar, mi novia es Lilit y el metal mi relig
79137913


Desconectado Desconectado

Mensajes: 1.129


4 Esquinas


Ver Perfil WWW
Re: Recopilacion de Funciones con operaciones Binarias.
« Respuesta #12 en: 4 Junio 2012, 15:57 »

HOLA!!!

Deberias agregar el reto de reemplazo de operadores binarios:


And, Not, Xor y Or reemplazados:
Código
  1. Private Function AndAlt(Byte1 As Long, Byte2 As Long) As Long
  2. Dim bit1() As Boolean
  3. Dim bit2() As Boolean
  4. Dim bit3() As Boolean
  5. Dim CT     As Long
  6. Dim Tam    As Long
  7. Dim b1     As Long
  8. Dim b2     As Long
  9. b1 = Byte1
  10. b2 = Byte2
  11.   Do
  12.       ReDim Preserve bit1(CT)
  13.       If b1 = 1 Then ReDim Preserve bit1(CT): bit1(CT) = True: Exit Do
  14.       If b1 = 0 Then ReDim Preserve bit1(CT): Exit Do
  15.       bit1(CT) = CBool(b1 Mod 2)
  16.       b1 = Fix(b1 / 2)
  17.       CT = CT + 1
  18.   Loop
  19.   CT = 0
  20.   Do
  21.       If b2 = 1 Then ReDim Preserve bit2(CT): bit2(CT) = True: Exit Do
  22.       If b2 = 0 Then ReDim Preserve bit2(CT): Exit Do
  23.       ReDim Preserve bit2(CT)
  24.       bit2(CT) = CBool(b2 Mod 2)
  25.       b2 = Fix(b2 / 2)
  26.       CT = CT + 1
  27.   Loop
  28.   If UBound(bit1) > UBound(bit2) Then ReDim Preserve bit2(UBound(bit1))
  29.   If UBound(bit1) < UBound(bit2) Then ReDim Preserve bit1(UBound(bit2))
  30.   Tam = UBound(bit1)
  31.   ReDim bit3(Tam)
  32.   For X = 0 To Tam
  33.       If bit1(X) Then If bit2(X) Then bit3(X) = True
  34.   Next
  35.   For X = 0 To Tam
  36.       If bit3(X) Then AndAlt = AndAlt + 2 ^ (X)
  37.   Next
  38.  
  39. End Function
  40.  
  41. Private Function OrAlt(Byte1 As Long, Byte2 As Long) As Long
  42. Dim bit1() As Boolean
  43. Dim bit2() As Boolean
  44. Dim bit3() As Boolean
  45. Dim CT     As Long
  46. Dim Tam    As Long
  47. Dim b1     As Long
  48. Dim b2     As Long
  49. b1 = Byte1
  50. b2 = Byte2
  51.   Do
  52.       ReDim Preserve bit1(CT)
  53.       If b1 = 1 Then ReDim Preserve bit1(CT): bit1(CT) = True: Exit Do
  54.       If b1 = 0 Then ReDim Preserve bit1(CT): Exit Do
  55.       bit1(CT) = CBool(b1 Mod 2)
  56.       b1 = Fix(b1 / 2)
  57.       CT = CT + 1
  58.   Loop
  59.   CT = 0
  60.   Do
  61.       If b2 = 1 Then ReDim Preserve bit2(CT): bit2(CT) = True: Exit Do
  62.       If b2 = 0 Then ReDim Preserve bit2(CT): Exit Do
  63.       ReDim Preserve bit2(CT)
  64.       bit2(CT) = CBool(b2 Mod 2)
  65.       b2 = Fix(b2 / 2)
  66.       CT = CT + 1
  67.   Loop
  68.   If UBound(bit1) > UBound(bit2) Then ReDim Preserve bit2(UBound(bit1))
  69.   If UBound(bit1) < UBound(bit2) Then ReDim Preserve bit1(UBound(bit2))
  70.   Tam = UBound(bit1)
  71.   ReDim bit3(Tam)
  72.   For X = 0 To Tam
  73.       If bit1(X) Then bit3(X) = True
  74.       If bit2(X) Then bit3(X) = True
  75.   Next
  76.   For X = 0 To Tam
  77.       If bit3(X) Then OrAlt = OrAlt + 2 ^ (X)
  78.   Next
  79.  
  80. End Function
  81.  
  82. Private Function XorAlt(Byte1 As Long, Byte2 As Long) As Long
  83. Dim bit1() As Boolean
  84. Dim bit2() As Boolean
  85. Dim bit3() As Boolean
  86. Dim CT     As Long
  87. Dim Tam    As Long
  88. Dim b1     As Long
  89. Dim b2     As Long
  90. b1 = Byte1
  91. b2 = Byte2
  92.   Do
  93.       ReDim Preserve bit1(CT)
  94.       If b1 = 1 Then ReDim Preserve bit1(CT): bit1(CT) = True: Exit Do
  95.       If b1 = 0 Then ReDim Preserve bit1(CT): Exit Do
  96.       bit1(CT) = CBool(b1 Mod 2)
  97.       b1 = Fix(b1 / 2)
  98.       CT = CT + 1
  99.   Loop
  100.   CT = 0
  101.   Do
  102.       If b2 = 1 Then ReDim Preserve bit2(CT): bit2(CT) = True: Exit Do
  103.       If b2 = 0 Then ReDim Preserve bit2(CT): Exit Do
  104.       ReDim Preserve bit2(CT)
  105.       bit2(CT) = CBool(b2 Mod 2)
  106.       b2 = Fix(b2 / 2)
  107.       CT = CT + 1
  108.   Loop
  109.   If UBound(bit1) > UBound(bit2) Then ReDim Preserve bit2(UBound(bit1))
  110.   If UBound(bit1) < UBound(bit2) Then ReDim Preserve bit1(UBound(bit2))
  111.   Tam = UBound(bit1)
  112.   ReDim bit3(Tam)
  113.   For X = 0 To Tam
  114.       If bit1(X) Then If bit2(X) = False Then bit3(X) = True
  115.       If bit2(X) Then If bit1(X) = False Then bit3(X) = True
  116.   Next
  117.   For X = 0 To Tam
  118.       If bit3(X) Then XorAlt = XorAlt + 2 ^ (X)
  119.   Next
  120.  
  121. End Function
  122.  
  123. Private Function NotAlt(Byte1 As Long) As Long
  124.   NotAlt = -(Byte1 + 1)
  125. End Function

GRACIAS POR LEER!!!
« Última modificación: 17 Febrero 2014, 19:42 por 79137913 » En línea

"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

 79137913                          *Shadow Scouts Team*
Psyke1
Wiki

Desconectado Desconectado

Mensajes: 1.089



Ver Perfil WWW
Re: Recopilacion de Funciones con operaciones Binarias.
« Respuesta #13 en: 19 Enero 2013, 01:23 »

Un oneliner que he tenido que crear para un proyecto en curso.
Devuelve la diferencia entre dos colores con un número del 0 al 100 según el porcentaje.

Código
  1. Public Function ColorDiff(ByVal lC1 As Long, ByVal lC2 As Long) As Single
  2.    ColorDiff = &H64 - &H64 * (Abs((lC1 And &HFF) - (lC2 And &HFF)) + Abs(((lC1 \ &H100) And &HFF) - ((lC2 \ &H100) And &HFF)) + Abs(((lC1 \ &H10000) And &HFF) - ((lC2 \ &H10000) And &HFF))) / &H2FD
  3. End Function

DoEvents! :P
En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Powered by SMF 1.1.20 | SMF © 2006-2008, Simple Machines