Noções básicas de manipulação de bits para C Programming
Um punhado de operadores de programação C fornecer 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 pouco frequentes são o ~ (ou um complemento) eo! (ou não). Eles não têm o charme dos operadores bit a bit lógico, mas eles têm um lugar.
operador de complemento da 1 inverte todos os bits em um valor, transformando a 1 em um 0 e um 0 em uma 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.
Tanto o ~ e! operadores estão unário operadores - você simplesmente prefixar um valor para obter os resultados.
Operador | Nome | Digitar | Açao |
---|---|---|---|
E | bit a bit | Máscaras pedaços, redefinindo alguns bits a 0 e deixando o restalone | |
| | OU | bit a bit | Define os bits, mudando bits específicos 0-1 |
^ | XOR | bit a bit | Altera bits a 0 quando correspondência- de outra forma, a 1 |
~ | complemento de 1 | unário | Inverte todos os bits |
~ | NÃO | unário | Altera 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:
bin [x] = n 0x80? '1': '0'-n lt; lt; = 1-
A primeira instrução realizará uma máscara com o valor n. Todos, mas o bit mais à esquerda do número é descartada. Se esse bit é ajustado, o que o torna uma condição verdadeira, o carácter 1 é armazenado no array- caso contrário, o carácter 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 é 16 bits em vez de oito, 0x8000 é usado 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 os spins de ansa, por meio do valor de n, um outro bit no valor é deslocado para a posição mais à esquerda. Que pouco é avaliado, ea cadeia binária é construído através da inserção de um personagem "1" ou "0".