Fundamentos da manipulação de bits para c programação

Um conhecimento dos operadores de programação C proporcionam a manipulação de dados no nível binário. Os operadores são fáceis de ignorar, mas apenas quando o seu verdadeiro poder e utilidade não são apreciados.

A ~ e! operadores

Dois operadores binários não frequentes são o ~ (ou 1 de complemento) ea! (ou não). Eles não têm o charme dos operadores bit a bit lógico, mas eles têm um lugar.

operador complemento do 1 vira todos os bits de um valor, transformando um 1 em um 0 e um 0 em um 1. Por exemplo:

~ = 01010011 10101100

O ! (NOT) operador afeta todo o valor - todos os bits. Ele muda qualquer valor diferente de zero para 0, eo valor de 0 a 1:

!01010011 = 00000000! 00000000 = 00000001


Zero e 1 são os dois únicos resultados possíveis quando se utiliza o bit a bit! operador.

Video: Me Salva! Programação em C - PLC12 - Funções Void Sem Parâmetros

Tanto o ~ e! operadores estão unário operadores - você simplesmente prefixar um valor para obter os resultados.

OperadorNomeTipoAçao
&Ebit a bitMáscaras pedaços, redefinindo alguns bits a 0 e deixando o resto
sozinho
|OUbit a bitDefine os bits, mudando bits específicos 0-1
^XORbit a bitAltera bits a 0 quando correspondência- de outra forma, a 1
~1&rsquo-s complementounárioInverte todos os bits
~NÃOunárioAltera valores diferentes de zero para 0- 0 valores, a 1
o binbin () função

Duas declarações explicar o que está acontecendo na função binbin () para torná-lo converter valores em uma string binária:

Video: Programação em C - Aula 40 - Constantes

bin [x] n = & 0x80? `1`: `0`-n lt; lt; = 1-

A primeira instrução realiza uma máscara E com o valor n. Todos, mas o bit mais à esquerda do número é descartado. Se esse bit é definido, o que torna uma condição TRUE, o personagem 1 é armazenado no array- de outra forma, o personagem 0 é armazenado.

O valor é expresso como 0x80, que é notação hexadecimal, um tipo de forma abreviada de binário. O valor hexadecimal 0x80 é igual a 10000000 binário, que é o e máscara. Se o valor é de 16 bits em vez de 8, 0x8000 é utilizado em vez disso, o que cria uma máscara binária de 16 bits.

A segunda instrução desloca os bits do valor n um ponto para a esquerda. Como as rotações da ansa, que trabalham através do valor de n, um outro bit no valor é deslocado para a posição mais à esquerda. Esse bit é avaliada, ea cadeia binária é construído através da inserção de um personagem ‘1’ ou ‘0’.


Publicações relacionadas