Guía de seguimiento dinámico de Solaris

Operadores a nivel de bit

D proporciona los siguientes operadores binarios para manipular bits individuales dentro de los operandos de números enteros. Estos operadores tienen todos el mismo significado que en ANSI-C.

Tabla 2–9 Operadores a nivel de bit de D

&

AND a nivel de bit 

|

OR a nivel de bit 

^

XOR a nivel de bit 

<<

desplaza el operando de la izquierda hacia la izquierda el número de bits especificado por el operando de la derecha 

>>

desplaza el operando de la izquierda hacia la derecha el número de bits especificado por el operando de la derecha 

El operador binario & se utiliza para borrar bits de un operando de números enteros. El operador binario | se utiliza para definir bits en un operando de números enteros. El operador binario ^ devuelve un uno en cada posición de bit donde exactamente se define uno de los bits de operando correspondiente.

Los operadores de desplazamiento se utilizan para mover bits hacia la izquierda o derecha en un operando de números enteros concreto. Si se realiza el desplazamiento hacia la izquierda, se rellenan las posiciones de bits vacías en el lado derecho del resultado con ceros. Si se realiza el desplazamiento hacia la derecha utilizando un operando de números enteros sin signo, se rellenan las posiciones de bits vacías en el lado izquierdo del resultado con ceros. Si se realiza el desplazamiento hacia la derecha utilizando un operando de números enteros con signo, rellena las posiciones de bits vacías en el lado izquierdo del valor del bit con signo, también conocido como una operación de desplazamiento aritmético.

Si se realiza un desplazamiento de un valor de número entero mediante un número negativo de bits o mediante un número de bits más grande que el número de bits en el operando de la izquierda, produce un resultado no definido. El compilador de D producirá un mensaje de error si puede detectar esta condición cuando compila el programa D.

Además de los operadores lógicos binarios, el operador unario ! se puede utilizar para realizar una negación a nivel de bits de un único operando: convierte cada bit cero en el operando en un bit uno, y cada bit uno del operando en un bit cero.