<<Operador (Visual Basic)
Realiza un desplazamiento aritmético a la izquierda 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 reactivan en el otro extremo. En un desplazamiento aritmético a la izquierda, los bits desplazados más allá del intervalo del tipo de datos de resultado se descartan y las posiciones de bits desocupadas a la derecha se establecen en cero.
Para evitar un desplazamiento por más bits de lo que el resultado puede contener, Visual Basic enmascara el valor de con una máscara de tamaño que corresponde 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.
Nota
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 izquierda 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 = 192
' The bit pattern is 0000 0000 1100 0000.
Dim result1, result2, result3, result4, result5 As Short
result1 = pattern << 0
result2 = pattern << 4
result3 = pattern << 9
result4 = pattern << 17
result5 = pattern << -1
Los resultados del ejemplo anterior son los siguientes:
result1es 192 (0000 0000 1100 0000).result2es 3072 (0000 1100 0000 0000).result3es -32768 (1000 0000 0000 0000).result4es 384 (0000 0001 1000 0000).result5es 0 (se desplazan 15 lugares a la izquierda).
La cantidad de desplazamiento result4 de se calcula como 17 Y 15, que es igual a 1.