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 1ES 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!¡.