Como usar o bit a bit | Operador em C Programming
Você já está familiarizado com operadores lógicos de tomada de decisão de programação C: para E e || para OR. No avaliação, ambos os itens devem ser verdadeiros para a instrução para ser avaliada como verdade- para o || avaliação, e apenas um dos itens devem ser verdadeiras.
No nível atômico, os operadores e | executar operações similares, mas numa base de bit-a-bit. O efeito líquido é que você pode usar o e | operadores para manipular bits individuais:
a | é o bit a bit OU operador, também conhecido como o OU inclusivo.
o é o bit a bit E operador.
O OR Set demonstra como usar o bit a bit OU operador definir bits em um byte. O valor ou é definida como a SET constante na Linha 2. É binário 00100000.
O OR SET
#include #define SET 32char * binbin (int n) -int main () t% s t% d n ", binbin (SET), SET) -printf (" = t% s t% d n ", binbin (resultado), resultado) -Retornar (0) -char * binbin (int n) {bin static char [9] -int x-for (x = 0-xlt; 8-x ++) {bin [x ] N = 0x80? '1': '0'-n lt; lt; = 1} bin [x] = ' 0'-retorno (bin) -}
Linha 12 calcula a operação OR entre uma entrada de valor, bor, ea constante SET. O resultado é exibido em três colunas: operador, string binária, e valor decimal. O resultado final da operação é que os bits definidos como 1 no valor SET também será definido como 1 no valor bor.
Exercício 1: Escreva o código-fonte do The ou definir em seu editor para criar um novo programa. Criar e executar o programa.
Aqui está a saída para o valor de 65:
Digite um valor de 0 a 255: 6501000001 65 | 00100000 32 01100001 97 =
Você pode ver na saída binária como o sexto bit é definido no resultado.
O que isso significa?
Isso significa que você pode manipular valores no nível binário, o que tem consequências interessantes para determinadas operações matemáticas, como mostrado na Up com esse texto.
UP com esse texto
() {Entrada de char int main #include [64] -int ch-int x = 0-printf ( "digitar tudo em maiúsculas:") -fgets (entrada, 63, stdin) -enquanto (entrada [x] = '! n ') CH = input [x] putchar (' n ') - retorno (0) -}
Exercício 2: Iniciar um novo projeto usando o código-fonte mostrado na Up com esse texto. Construir e executar.
Devido à forma como os códigos ASCII mapear entre maiúsculas e minúsculas, você pode alternar o caso simplesmente definindo o sexto bit em um byte.