Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Executa um deslocamento aritmético para a direita em um padrão de bit.
Sintaxe
result = pattern >> amount
Partes
result
Obrigatório Valor numérico integral. O resultado da mudança do padrão de bit. O tipo de dados é o mesmo que o de pattern.
pattern
Obrigatório Expressão numérica integral. O padrão de bit a ser deslocado. O tipo de dados deve ser um tipo integral (SByte, , Byte, Short, UShort, Integer, UInteger, ou LongULong).
amount
Obrigatório Expressão numérica. O número de bits a serem deslocados para o padrão de bits. O tipo de dados deve ser Integer ou ampliado para Integer.
Observações
As mudanças aritméticas não são circulares, o que significa que os bits deslocados de uma extremidade do resultado não são reintroduzidos na outra extremidade. Em uma mudança aritmética para a direita, os bits deslocados para além da posição do bit mais à direita são descartados, e o bit mais à esquerda (sinal) é propagado para as posições de bit desocupadas à esquerda. Isso significa que, se pattern tiver um valor negativo, as posições desocupadas serão definidas como uma; caso contrário, elas serão definidas como zero.
Observe que os tipos Bytede dados, UIntegerUShorte ULong não estão assinados, portanto, não há nenhum bit de sinal a ser propagado. Se pattern for de qualquer tipo não assinado, as posições desocupadas sempre serão definidas como zero.
Para evitar a mudança por mais bits do que o resultado pode conter, o Visual Basic mascara o valor com uma máscara de amount tamanho correspondente ao tipo de dados de pattern. O AND binário desses valores é usado para a quantidade de deslocamento. As máscaras de tamanho são as seguintes:
Tipo de dados de pattern |
Máscara de tamanho (decimal) | Máscara de tamanho (hexadecimal) |
|---|---|---|
SByte, Byte |
7 | &H00000007 |
Short, UShort |
15 | &H0000000F |
Integer, UInteger |
31 | &H0000001F |
Long, ULong |
63 | &H0000003F |
Se amount for zero, o valor será result idêntico ao valor de pattern. Se amount for negativo, ele será usado como um valor não assinado e mascarado com a máscara de tamanho apropriada.
As mudanças aritméticas nunca geram exceções de estouro.
Sobrecarga
O >> operador pode ser sobrecarregado, o que significa que uma classe ou estrutura pode redefinir seu comportamento quando um operando tem o tipo dessa classe ou estrutura. Se o código usar esse operador em tal classe ou estrutura, certifique-se de entender seu comportamento redefinido. Para obter mais informações, consulte Procedimentos de Operador.
Exemplo
O exemplo a seguir usa o >> operador para executar deslocamentos aritméticos para a direita em valores integrais. O resultado sempre tem o mesmo tipo de dados que o da expressão que está sendo deslocada.
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
Os resultados do exemplo anterior são os seguintes:
result1é 2560 (0000 1010 0000 0000).result2é 160 (0000 0000 1010 0000).result3é 2 (0000 0000 0000 0000 0010).result4é 640 (0000 0010 1000 0000).result5é 0 (deslocado 15 lugares para a direita).
O valor da mudança é result4 calculado como 18 E 15, o que equivale a 2.
O exemplo a seguir mostra as mudanças aritméticas em um 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
Os resultados do exemplo anterior são os seguintes:
negresult1é -512 (1111 1110 0000 0000).negresult2é -1 (o bit de sinal é propagado).