Manipulação de bits

Manipulação de bits

Lembramos que um inteiro pode ser escrito na forma decimal, binária ou hexadecimal:

13 (decimal) = 0b1101 = 0xd

> As funções binString e hexString podem ser usadas para obter a representação, respectivamente, binária e hexadecimal de um inteiro.

O interesse de saber manipular valores binários é poder otimizar etapas em cálculos frequentes, ou manipular séries de booleanos rapidamente.

O que é um número binário

Um número binário pode representar ao mesmo tempo um número e um array de valores booleanos. Como os inteiros têm 64 bits, é possível representar 64 valores booleanos em um único inteiro. A seguir, consideramos que um bit em 1 corresponde a um valor true, e um bit em 0 corresponde a false.

Operadores e funções disponíveis

Os operadores binários do LeekScript são:

Funções dedicadas também facilitam a manipulação bit a bit: testBit, setBit, bitCount, bitLength, trailingZeros e leadingZeros.

Para manipular inteiros de mais de 64 bits, veja os BigInteger.

Máscaras binárias

As máscaras binárias são usadas para recuperar o valor de bits ou de grupos de bits de um número.

Recuperar o valor de um bit no índice N

Para recuperar o valor no índice N:

Recuperar o valor de N bits consecutivos

Para recuperar o valor dos N últimos bits:

Onde 0b111...111 é um número binário com o algarismo 1 repetido N vezes, portanto equivalente a 2**N-1.