Compartilhar via


>> Operador (Visual Basic)

Executa um deslocamento aritmético para a direita em um padrão de bits.

result = pattern >> amount

Partes

  • result
    Obrigatório.Valor numérico integral.O resultado do deslocamento do padrão de bits.O tipo de dados é o mesmo de pattern.

  • pattern
    Obrigatório.Expressão numérica integral.O padrão de bits para ser deslocado.O tipo de dados deve ser um tipo integral (SByte, Byte, Short, UShort, Integer, UInteger, Long, ou ULong).

  • amount
    Obrigatório.Expressão numérica.O número de bits para deslocar o padrão de bits.O tipo de dados deve ser Integer ou ampliável para Integer.

Comentários

Shifts aritméticos são não circulares, que significa que os bits deslocados de uma extremidade do resultado não são reintroduzidos na outra extremidade.Em um deslocamento aritmético à direita, os bits deslocados além da posição mais à direita de bits são descartados, e o bit mais à esquerda é propagado para as posições de bits vagas à esquerda.Isso significa que se pattern tiver um valor negativo, as posições vagas são definidas como um; caso contrário, são definidas como zero.

Observe que os tipos de dados Byte,UShort,UInteger e ULong não são assinados e, portanto, não há nenhum bit de sinal para se propagar.Se pattern for de qualquer tipo não assinado, as posições vazias são sempre definidas como zero.

Para evitar um deslocamento de bits maior do que o resultado pode comportar, Visual Basic mascara o valor de amount com uma máscara de tamanho correspondente ao tipo de dados de pattern.O binário AND desses valores é usado para a quantidade de deslocamentos.As máscaras de tamanho são:

Tipo de dados do 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 de result é idêntico ao valor de pattern.Se amount for negativo, ele é interpretado como um valor não assinado e mascarado com a máscara de tamanho apropriada.

Deslocamentos aritméticos nunca geram exceções de overflow (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 daquela classe ou estrutura.Se seu código usa esse operador em tal classe ou estrutura, esteja certo que entende seu comportamento redefinido.Para obter mais informações, consulte Procedimentos de operador (Visual Basic).

Exemplo

O exemplo a seguir usa o operador >> para executar deslocamentos aritméticos para a direita em valores integral.O resultado sempre tem o mesmo tipo de dados que a 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 0010).

  • result4 é 640 (0000 0010 1000 0000).

  • result5 é 0 (deslocadas 15 locais para a direita).

O valor de deslocamento para result4 é calculado como 18 AND 15, que é igual a 2.

O exemplo a seguir mostra deslocamentos aritméticos 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).

Consulte também

Referência

Operadores Bit Shift (Visual Basic)

Operadores de atribuição (Visual Basic)

>> (Visual Basic) do operador =

Precedência de operadores em Visual Basic

Operadores listados pela funcionalidade (Visual Basic)

Conceitos

Operadores aritméticos em Visual Basic