Esta seção descreve as funções e operadores disponíveis para
examinar e tratar cadeias de bits, ou seja, valores dos tipos de dados
bit e bit varying.
(Embora apenas o tipo de dados bit seja mencionado nas
tabelas, os valores do tipo de dados bit varying podem
ser usados da mesma forma.)
As cadeias de bits oferecem suporte aos operadores de comparação
usuais descritos na Tabela 9.1,
assim como aos operadores descritos na
Tabela 9.14.
Tabela 9.14. Operadores de cadeia de bits
Operador Descrição Exemplo(s) |
|---|
Concatenação
|
AND bit a bit (as entradas devem ter comprimentos iguais)
|
OR bit a bit (as entradas devem ter comprimentos iguais)
|
OR exclusivo (XOR) bit a bit (as entradas devem ter comprimentos iguais)
|
NOT bit a bit
|
deslocamento à esquerda bit a bit (o comprimento da cadeia é preservado)
|
deslocamento à direita bit a bit (o comprimento da cadeia é preservado)
|
Algumas funções disponíveis para cadeia binária também estão disponíveis para cadeia de bits, conforme descrito na Tabela 9.15.
Tabela 9.15. Funções de cadeia de bits
Função Descrição Exemplo(s) |
|---|
|
Retorna o número de bits definidos na cadeia de bits (também conhecido como “popcount”).
|
|
Retorna o número de bits na cadeia de bits.
|
|
Retorna o número de bits na cadeia de bits.
|
Retorna o número de bytes (octetos) na cadeia de bits.
|
Substitui a sub-cadeia de
|
Retorna a primeira posição do início da
|
Extrai a sub-cadeia de bits de
|
Extrai o
|
Define o
|
Além disso, é possível converter valores inteiros de/para o
tipo de dados bit.
A conversão de inteiro para o tipo de dados bit(n)
copia os n bits mais à direita.
A conversão de inteiro para uma cadeia de bits com comprimento maior
que o próprio inteiro estende o sinal à esquerda.
Alguns exemplos:
44::bit(10) →000010110044::bit(3) →100cast(-44 as bit(12)) →111111010100'1110'::bit(4)::integer →14
Note que apenas converter para “bit”
significa converter para bit(1), portanto
o resultado será apenas o bit menos significativo do inteiro.