>> operador (Visual Basic)

Realiza un desplazamiento aritmético a la derecha en un patrón de bits.

Sintaxis

result = pattern >> amount  

Partes

result
Necesario. Valor numérico entero. Resultado de desplazar el modelo de bits. El tipo de datos es el mismo que el de pattern.

pattern
Obligatorio. Expresión numérica integral. Modelo de bits que se va a desplazar. El tipo de datos debe ser un tipo entero (SByte, Byte, Short, UShort, Integer, UInteger, Long o ULong).

amount
Obligatorio. Expresión numérica. Número de bits que se va a desplazar el modelo de bits. El tipo de datos debe ser Integer o ampliarse a Integer.

Comentarios

Los desplazamientos aritméticos no son circulares, lo que significa que los bits desplazados fuera de un extremo del resultado no se volveron a convertir en el otro extremo. En un desplazamiento aritmético a la derecha, los bits desplazados más allá de la posición de bits más a la derecha se descartan y el bit situado más a la izquierda (signo) se propaga a las posiciones de bits desocupadas a la izquierda. Esto significa que si tiene un valor negativo, las posiciones desocupadas se establecen en pattern una; de lo contrario, se establecen en cero.

Tenga en cuenta que los tipos de datos , , y no tienen signo, por lo Byte que no hay ningún bit de signo para UShort UInteger ULong propagar. Si pattern es de cualquier tipo sin signo, las posiciones desocupadas siempre se establecen en cero.

Para evitar el desplazamiento por más bits de los que puede contener el resultado, Visual Basic enmascara el valor de con una máscara de tamaño correspondiente al tipo de amount datos de pattern . El and binario de estos valores se usa para la cantidad de desplazamiento. Las máscaras de tamaño son las siguientes:

Tipo de datos de pattern Máscara de tamaño (decimal) Máscara de tamaño (hexadecimal)
SByte, Byte 7 &H00000007
Short, UShort 15 &H0000000F
Integer, UInteger 31 &H0000001F
Long, ULong 63 &H0000003F

Si amount es cero, el valor de result es idéntico al valor de pattern . Si amount es negativo, se toma como un valor sin signo y se enmascara con la máscara de tamaño adecuada.

Los desplazamientos aritméticos nunca generan excepciones de desbordamiento.

Sobrecarga

El >> operador se puede sobrecargar, lo que significa que una clase o estructura puede volver a definir su comportamiento cuando un operando tiene el tipo de esa clase o estructura. Si el código usa este operador en este tipo de clase o estructura, asegúrese de que comprende su comportamiento redefinido. Para obtener más información, consulta Operator Procedures.

Ejemplo

En el ejemplo siguiente se usa >> el operador para realizar desplazamientos aritméticos a la derecha en valores enteros. El resultado siempre tiene el mismo tipo de datos que el de la expresión que se va a desplazar.

Dim pattern As Short = 2560
' The bit pattern is 0000 1010 0000 0000.
Dim result1, result2, result3, result4, result5 As Short
result1 = pattern >> 0
result2 = pattern >> 4
result3 = pattern >> 10
result4 = pattern >> 18
result5 = pattern >> -1

Los resultados del ejemplo anterior son los siguientes:

  • result1 es 2560 (0000 1010 0000 0000).

  • result2 es 160 (0000 0000 1010 0000).

  • result3 es 2 (0000 0000 0000 0010).

  • result4 es 640 (0000 0010 1000 0000).

  • result5 es 0 (se desplazan 15 lugares a la derecha).

La cantidad de desplazamiento result4 de se calcula como 18 Y 15, que es igual a 2.

En el ejemplo siguiente se muestran los desplazamientos aritméticos en un valor negativo.

Dim negPattern As Short = -8192
' The bit pattern is 1110 0000 0000 0000.
Dim negResult1, negResult2 As Short
negResult1 = negPattern >> 4
negResult2 = negPattern >> 13

Los resultados del ejemplo anterior son los siguientes:

  • negresult1 es -512 (1111 1110 0000 0000).

  • negresult2 es -1 (se propaga el bit de signo).

Consulta también