Macros e VBA

Usando a função de mudança de bit no Excel VBA

Você precisa de operadores Bitwise Shift no Excel VBA que é semelhante aos operadores << e >> em C ++, para fazer a mudança de bit no Excel VBA. Mas  infelizmente, o VBA não possui nenhum operador de mudança de bit. Neste caso, podemos replicar operadores de deslocamento bit a bit, com multiplicação ou divisão pela potência apropriada de 2.

Função Bitwise Right Shift para fazer a mudança de bit

Public Function shr(ByVal Value As Long, ByVal Shift As Byte) As Long
    Dim i As Byte
    shr = Value
    If Shift > 0 Then
        shr = Int(shr / (2 ^ Shift))
    End If
End Function

A mudança de bit à direita é igual a dividir o valor por 2Shift.

Função de deslocamento à esquerda bit a bit:

função de mudança de bit no Excel VBA
Public Function shl(ByVal Value As Long, ByVal Shift As Byte) As Long
    shl = Value
    If Shift > 0 Then
        Dim i As Byte
        Dim m As Long
        For i = 1 To Shift
            m = shl And &H40000000
            shl = (shl And &H3FFFFFFF) * 2
            If m <> 0 Then
                shl = shl Or &H80000000
            End If
        Next i
    End If
End Function

Deslocamento à esquerda é igual a multiplicar Valor por 2Shift. Mas, para evitar um erro de estouro, usamos um pequeno truque para criar a mudança de bit:

m = shl And &H40000000      ' save 30th bit
shl = shl And &H3FFFFFFF    ' clear 30th and 31st bits
shl = shl * 2               ' multiply by 2
If m <> 0 Then
 shl = shl Or &H80000000 ' set 31st bit
End If

Qual é um exemplo de como usar DESLOCDIRBIT no Excel?

DESLOCDIRBIT é uma função do Excel usada para deslocar bits para a esquerda ou para a direita. A função recebe dois argumentos: o número de bits a serem deslocados e o número de casas para deslocá-los. Por exemplo, se você quiser deslocar o número 1234 cinco casas para a esquerda, use a função DESLOCDIRBIT(1234,5). Isso resultaria no número 0001234. Se você quisesse deslocar o número 1234 cinco casas para a direita, usaria a função DESLOCDIRBIT(1234,5). Isso resultaria no número 1234000.

Quando você não deve usar DESLOCDIRBIT no Excel?

DESLOCDIRBIT não deve ser usado quando o número de bits a serem deslocados for maior que o número de bits no operando. Por exemplo, se você quiser deslocar o número 1234 dois bits para a direita, use a fórmula: =DESLOCDIRBIT(1234,2). No entanto, se você quiser deslocar o número 12345678 dois bits para a direita, use a fórmula: =DESLOCDIRBIT(12345678,2), pois o número de bits a deslocar (8) é maior que o número de bits no operando (4).

E mais...

Compre Aqui pelo menor preço: NotebooksSmartphonesLivros e tudo que você precisa. Receba suas compras rapidamente!
Você também pode comprar Microsoft 365 Family, Microsoft 365 Personal, Office 365 Home, ou Office Professional Plus.

Edivaldo

Edivaldo. Analista de funções e fórmulas de Excel, adoro fazer planilhas e compartilhar meus conhecimentos com as pessoas. Seja bem-vindo ao tudo Excel, onde você aprende de graça e tira suas dúvidas.

Deixe um comentário

Botão Voltar ao topo