https://foro.gambas-es.org/viewtopic.php?f=19&t=5402&p=31957#p31957
-----------------------------------
jsbsan
Martes, 26 Abril 2016, 19:29

Re: Dudas Con << Y >>, ~
-----------------------------------
vicr:

He encontrado esto:
http://javascript.espaciolatino.com/lengjs/jsgram/op_bin.htm

[quote]El ordenador, internamente, trata cualquier tipo de datos como una cadena binaria ( ceros y unos). Así los números se representan en sistema binario de numeración mientras que los caracteres se convierten a código ASCII, que son números que se almacenan por tanto codificados en binario. JavaScript ofrece los operadores típicos para trabajar con estas cadenas a nivel de bit (cada uno de los ceros o unos de las cadenas binarias). Para trabajar con estos operadores es conveniente tener una idea previa sobre la codificación binaria.
Complementación ~
Complementa, o niega, una cadena binaria conviertiendo los 1 en 0 y los 0 en 1.
Por ejemplo el número 38 escrito en sistema binario es 00100110 si le aplicamos este operador se convierte en 11011001, o sea el -39 (JavaScript usa codificación en complemento a 2 para los números negativos).

Desplazamiento izquierda <<
Desplaza los bits a la izquierda los lugares que se le indique rellenando con ceros por la derecha y desechando los bits de mayor peso, esto equivale a multiplicar por potencias de 2. Por ejemplo si al 00011010 (26) lo desplazamos 2 a la izquierda tendremos el 01101000 (104). 
var num = 26, res;

      res = num <<2>>
Desplaza los bits a la derecha los lugares que se le indique rellenando con ceros por la izquierda y desechando los bits de menor peso, esto equivale a una división entera por potencias de 2. Por ejemplo si al 00011010 (26) lo desplazamos 2 a la derecha tendremos el 00000110 (6). 
var num = 26, res;

      res = num << 2;        /* num contendrá 
      104 */ 

AND lógico binario &
Realiza un AND lógico bit a bit entre dos valores. El AND lógico da como resultado 1 sólo si ambos bits son 1. Por ejemplo
                            0 1 1 0 1 1 0 1 (109)
                     AND 0 0 1 0 0 1 1 0 (38)
resultado:            0 0 1 0 0 1 0 0 (36) 
var op1 = 109, op2 = 38, res;

      res = op1 & op2;      /*res
       contiene 36 */

OR lógico binario |
Realiza un OR lógico bit a bit entre dos valores. El OR lógico da como resultado 0 sólo si ambos bits son 0. Por ejemplo
                              0 0 1 1 1 0 1 0    (58)
                        OR  0 1 0 1 0 0 1 0     (82)
resultado:              0 1 1 1 1 0 1 0    (122) 
En el ejemplo podemos ver la sintaxis del operador
var op1 = 58, op2 = 82, res;

      res = op1 | op2;                    /*res 
      contiene 122 */ 

XOR lógico binario ^
Realiza un XOR lógico bit a bit entre dos valores. El XOR lógico da como resultado 1 si uno sólo de los bits es 1. Por ejemplo
                              0 0 1 1 1 0 1 0    (58)
                        OR  0 1 0 1 0 0 1 0     (82)
resultado:              0 0 1 0 1 0 0 0    (40)
En el ejemplo podemos ver la sintaxis del operador 
var op1 = 109, op2 = 38, res;

      res = op1 ^ op2;                 /*res 
      contiene 40*/ 
          [/quote]

Ahora falta traducirlo al gambas3...  ;-)


