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

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  [VB6] &H20? Explicación?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [VB6] &H20? Explicación?  (Leído 4,036 veces)
Dunkansdk

Desconectado Desconectado

Mensajes: 25


Ver Perfil
[VB6] &H20? Explicación?
« en: 1 Agosto 2012, 02:17 am »

Hola gente! he visto en algunos códigos que utilizan instrucciones como estas:

Código
  1. If (A And &H20) Then Exit Function
  2. If (C And &H8000) Then Exit Function
  3. If (B And &H8) Then
  4. etc...

La verdad, no soy de utilizar visual basic pero me gustaría entender que son y para que sirven bien  :rolleyes:


En línea

tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: [VB6] &H20? Explicación?
« Respuesta #1 en: 1 Agosto 2012, 04:30 am »

supongo q A C B son variables, mientras &H20 &H8000 y &H8 son valores en hexadecimal


En línea

Elemental Code


Desconectado Desconectado

Mensajes: 622


Im beyond the system


Ver Perfil
Re: [VB6] &H20? Explicación?
« Respuesta #2 en: 1 Agosto 2012, 04:31 am »

http://es.wikipedia.org/wiki/%C3%81lgebra_de_Boole

AND - OR - NOT - XOR


Son operadores binarios (o booleanos :P)

para entenderlo rapidito. Compara los 1 y 0 de cualquier cosa.
(todo en una pc son 1 y 0 :P)

Los resultados son asi:

Código:
A B C
0 AND 0 -> 0
0 AND 1 -> 0
1 AND 0 -> 0
1 AND 1 -> 1
En línea

I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas
Dunkansdk

Desconectado Desconectado

Mensajes: 25


Ver Perfil
Re: [VB6] &H20? Explicación?
« Respuesta #3 en: 1 Agosto 2012, 15:30 pm »

Bueno si, lo se... Y por lo que djo elemental...
If C And H&8 Then

sería... Si C = 8 -> true?
En línea

79137913


Desconectado Desconectado

Mensajes: 1.169


4 Esquinas


Ver Perfil WWW
Re: [VB6] &H20? Explicación?
« Respuesta #4 en: 1 Agosto 2012, 18:29 pm »

HOLA!!!

Bueno si, lo se... Y por lo que djo elemental...
If C And H&8 Then

sería... Si C = 8 -> true?

No!

Lo que quiere decir es que si la operacion (C and 8) da true continue.

La operacion (c and 8) dara como resultado un Long, si el long es positivo distinto de 0 sera true, si da 0 sera false y en algunos casos de negativos sera true y en otros false.

TOMAR EN CUENTA:
Código:
And: Solo si se comparte el mismo bit en ambos numeros.
Valor 1 = 0 0 1 0 1 0 0 0
Valor 2 = 1 0 1 1 1 0 1 1
        -----------------
Result  = 0 0 1 0 1 0 0 0 = true

Valor 1 = 0 1 0 0 0 1 0 0
Valor 2 = 1 0 1 1 1 0 1 1
        -----------------
Result  = 0 0 0 0 0 0 0 0 = false

Valor 1 = 1 0 1 1 1 1 1 0
Valor 2 = 1 1 1 0 1 1 1 1
        -----------------
Result  = 1 0 1 0 1 1 1 0 = true

Para entender mejor los operadores binarios:
http://foro.elhacker.net/empty-t323992.0.html

GRACIAS POR LEER!!!
« Última modificación: 1 Agosto 2012, 18:31 pm 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*
BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: [VB6] &H20? Explicación?
« Respuesta #5 en: 11 Agosto 2012, 07:35 am »

Código
  1. If (A And &H20) Then Exit Function
  2. If (C And &H8000) Then Exit Function
  3. If (B And &H8) Then
  4. etc...

En ese caso se le llaman MASCARAS DE BITS es decir Filtra TODOS los bits 1 que concuerden (tal cual el ejemplo de @79137913) con que solo sea un numero distinto de 0 se tratara como un valor TRUE PERO si la mascara no retorna un numero distinto cero, es decir, nos retornara el 0 se toma la expresión como FALSE.

* OJO esto en caso de que estén en sentencias de un if then, while, etc...

Existen otros casos como estos:

E = (A and 5 or 10) xor B

en este tipo de expresión NO IMPORTA DONDE SE UBIQUEN inclusive en los if then se toman como operaciones binarias es decir operaciones con bits (revisa los post de arriba).

Dulces Lunas!¡.
« Última modificación: 11 Agosto 2012, 07:55 am por BlackZeroX (Astaroth) » En línea

The Dark Shadow is my passion.
BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: [VB6] &H20? Explicación?
« Respuesta #6 en: 11 Agosto 2012, 07:55 am »

Bueno si, lo se... Y por lo que djo elemental...
If C And H&8 Then

sería... Si C = 8 -> true?

Como ya te dije mensione CUALQUIER VALOR distinto de 0 es TRUE para un if then solo se necesita un bit prendido independientemente su posicion...

De alguna manera el TRUE es el complemento de 0 y el complemento es una operación booleana, los tipos de datos unsigned y signed (Lenguaje C/C++ unsigned/signed pero de igual manera en vb6 como currency/long respectivamente) según estos modificadores puede tratarse ese 1 como -1 pero en si es el 1 pero con signo, es decir, si tubieramos un INTEGER:

1bit su valor TRUE seria 1 (unsigned) y -1 (signed)
2bit su valor TRUE seria 3 (unsigned), 1(unsigned, signed) y -1(signed)
3bit su valor TRUE seria 7 (unsigned), 3(unsigned, signed) y 1 (unsigned, signed), -3(signed), -2(signed) y -1(signed)

Es decir, da igual la longitud del entero con que solo haya un bit encendido se puede CONSIDERAR TRUE, peeeero el verdadero valor de TRUE SIEMPRE SERA EL COMPLEMENTO DE 0 es decir TODOS LOS BITS EN 1

ES POR ELLO QUE ESTAS AFIRMACIONES SON CORRECTAS!¡.
NOT FALSE es igual a TRUE
NOT TRUE es igual a FALSE

* En una PC solo existen enteros, los flotantes con una estructura de enteros acomodados de una forma algo peculiar.
* El bit con mayor peso (mas a la izquierda) es el que indica el bit de signo (abre la calculadora de windows ponla en modo programador) escribe un numero NEGATIVO por ejemplo -3 y revisa que el bit mas a la izquierda (independientemente del numero que sea) SIEMPRE SERA 1 por ello para comprobar en binario si un valor almacenado en un LONG es negativo se pone

if (long and &h80000000) then <--- la mascara hace referencia a 10000000000000000000000000000000 en binario
...
end if

por ejemplo

-2& <--- con el & espesificamos que el numero es un long es bianrio seria:  11111111111111111111111111111110

haciendo la mascara seria:

11111111111111111111111111111110 (-2)
10000000000000000000000000000000 (-2147483648 es decir &h80000000)
-----------------------------------------------------
10000000000000000000000000000000 <-- resultado (SE CONSIDERA TRUE en el if then)

puedes revisar algunas operaciones con bits aqui: Recopilacion de Funciones con operaciones Binarias.

Dulces Lunas!¡.
« Última modificación: 11 Agosto 2012, 08:03 am por BlackZeroX (Astaroth) » En línea

The Dark Shadow is my passion.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Explicación del modelo OSI
Tutoriales - Documentación
oscarosalazar 3 38,603 Último mensaje 8 Noviembre 2005, 03:27 am
por x1r0x
Explicacion
Programación Visual Basic
Neobius 6 4,737 Último mensaje 5 Septiembre 2005, 00:57 am
por Numeros
Explicacion
Sugerencias y dudas sobre el Foro
tlemus 5 2,678 Último mensaje 20 Octubre 2005, 23:28 pm
por RaDioX - Noxz
c-=++a/b-3+a%b; d-=++a/(b+3-4*a)%b; //Explicación...
Java
*-.Sub-Vorbio.-* 3 2,680 Último mensaje 12 Noviembre 2008, 21:49 pm
por juancho77
Explicacion de WindowProcedure
Programación C/C++
VintageChanel 1 1,542 Último mensaje 14 Abril 2015, 17:57 pm
por rir3760
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines