bit a bit C ++ y (Y), o (|), O exclusivo (^) y similares operadores

Había sido previamente para estos operadores no están de acuerdo, pero recientemente descubierto dominado estos operadores en realidad mejorar la eficiencia de la resolución de problemas, la lógica de código será más claramente

 

un% = b es equivalente a a = a% b modulo y asignación. 

a | = b es equivalente a a = a | b y bit a bit o asignación. 

a & = b es equivalente a a = a & b y asignación bit a bit. 

a ^ = b es equivalente a a = a ^ b XOR bit a bit y asignación. 

A! = determinación b lógica, un no es igual a b, cuando ab cierto cuando desigual. 

&& lógica, son verdaderas es cierto. 

|| lógica OR, son ambos falso es falso, de lo contrario es cierto. 

! Una lógica no es así, un resultado falso es verdadero, invierte lo contrario. 

| OR bit a bit 

^ bit a bit OR exclusiva 

y AND bit a bit 

~ bit a bit

  

 

Operador AND (Y)

Dos datos participan en las operaciones, de acuerdo con los bits binarios "y" la operación.

0 y 0 = 0;  
0 y 1 = 0;    
1 y 0 = 0;     
1 y 1 = 1;   

0000 0011 y 0000 0101 = 0000 0001;

"La operación" propósito especial:

(1) despejado. Si desea borrar una unidad, aunque toda su bit binario es 0, mientras un valor de fase son cero, el resultado es cero.

(2) tiene un número de bit especificado

Método: se encontró un número, el bit correspondiente de X a ser exagerado, el número de bit correspondiente es 1, los bits restantes son cero, y este número X es "la operación" puede ser bit especificado de X.

Ejemplo: Sea X = 10101110,

          X fuera de los 4 bits más bajos, con X & 0,000 1,111 = 0,000 1110 se puede obtener;

     X también puede ser usado para tomar la posición 2,4,6.

 

Operador binario OR (|)

Dos objetos participan en la operación, de acuerdo con los bits binarios "o" la operación.

0 | 0 = 0;    
0 | 1 = 1;    
1 | 0 = 1;     
1 | 1 = 1; 

0000 0011 | 0000 0101 = 0000 0111;

  

Método: se encontró un número, correspondiente al conjunto X a 1, el número de bit correspondiente es 1, los bits restantes son cero. Este número permite a X o X 1 en ciertas posiciones.

Ejemplo: 4 La posición baja de X = 10100000 1, con X | 0.000 1.111 = 1.010 1.111 se puede obtener.

 

Exclusiva-OR operador (^)

Dos datos participan en las operaciones, de acuerdo con un bit binario operación "o exclusivo".

Es decir: los dos objetos participan en las operaciones, si los dos bits correspondiente a "exclusivos" (diferentes valores), el resultado es 1 bit, y 0 en caso contrario.

0 ^ 0 = 0;    
0 ^ 1 = 1;    
1 ^ 0 = 1;    
1 ^ 1 = 0;

  

"Operación XOR" efecto especial:

(1) un número específico para encontrar un flip bits, corresponde a X le da la vuelta, el número del bit correspondiente es 1, los bits restantes son cero, este número corresponde a la X-bit a la O exclusiva.

  Ejemplo: X = 10101110, los 4 bits más bajos de la X-invertida por X ^ 0,000 1,111 = 1,010 0001 puede ser obtenida. 

(2) con o diferente de 0, para retener el valor original, X ^ 0,000 0,000 = 1,010 1110.

operador de negación (~)

A los datos de participar en las operaciones, de acuerdo con los bits binarios "invertido" operación.

A saber: un número binario de bit a bit, es decir, 0 se convierte en 1, 1 0 variable.

~ 1 = 0;   
~ 0 = 1;

  

De manera que un número mínimo de bits cero, se puede expresar como: a & ~ 1.

1111111111111110 ~ 1 valor, entonces operación "AND", algunos de los bits menos significativos 0.

Desde "-" prioridad de los operadores de los operadores aritméticos, operadores relacionales, operadores lógicos y otros operadores son altos.

 

operador de desplazamiento a la izquierda (<<)

Todos los bits de cada uno de la izquierda operando un número de bits (dígitos binarios descartados fue a la izquierda, el complemento derecha 0). Por lo tanto, la siguiente fórmula es equivalente a dos

a = a << 2; 
a = a * 2;

  

operador de desplazamiento a la derecha (>>)

Todos los bits de cada uno de una serie de un número de bits a la derecha, los números positivos del complemento izquierda 0, 1 negativos llenan la izquierda y derecha descartan.

Operando cada desplazamiento a la derecha, lo que equivale al número dividido por dos.

 

>> operador especificar todos los bits a la derecha de expresión1 expresión2 dígitos. expresión 1 bit de signo se utiliza para rellenar los bits vacantes a la derecha de la izquierda. derecho poco desplazado hacia afuera se descartan.

Por ejemplo, se evalúa el código siguiente, el valor de la temperatura de -4:

   14 (es decir, binario 11110010)

     Derecha dos son iguales a 4 (es decir, binario 11111100).

     var temp = -14 >> 2

 

Sin firmar operador de desplazamiento a la derecha (>>>)

>>> operador el derecho a respectivos bits especificados en bits expresión1 expresión2. Después de la izquierda a las posiciones que quedan libres adecuados se llenan con ceros. bits de salida adecuados se descartan.

Por ejemplo: var temp = -14 >>> 2

     La variable temporal es 14 (es decir, binario 1,111,111,111,111,111 1,111,111,111,110,010),

     Igual a 1073741820 (es decir, binario 0,011,111,111,111,111 1,111,111,111,111,100) a la derecha después de dos

Los datos de funcionamiento diferentes longitudes bit a bit

Si dos tamaños diferentes de datos para operación de bit, el sistema presionarán tanto la alineación a la derecha, y la operación en modo bit.

En "y" Ejemplo de operación de la siguiente manera: Sabemos que en el tipo de lenguaje C es de cuatro bytes de longitud, tipo int 2 bytes, si un largo datos de tipo int con una alineación tipo de datos "y" la operación, a la derecha después del bit insuficiente izquierda según los siguientes tres casos compensar,

Si los datos de número entero es positivo, la de 16 0 a la izquierda

Si los datos de número entero es negativo, llenar la izquierda de la 16 1

Si los datos de entero sin signo también se deja hacer 16 0


Tales como: largo a = 123; int b = 1; calcular un & b.

Tales como: largo a = 123; int b = -1; calcular un & b.

Tales como: largo a = 123; unsigned int b = 1; calcular un & b.

 

Referencia: https: //blog.csdn.net/tkp2014/article/details/41172103

Supongo que te gusta

Origin www.cnblogs.com/jaszzz/p/12635375.html
Recomendado
Clasificación