Como usar o bit a bit | operador em c programação

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 declaração para ser avaliada como verdade- para o || avaliação, apenas um dos itens deve ser verdade.

No nível atômico, os operadores & e | realizar operações semelhantes, mas em uma base bit-por-bit. O efeito líquido é que você pode usar o & e | operadores para manipular os bits individuais:

a | é o bit a bit OR 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 OR operador definir bits em um byte. O valor OR é definida como a SET constante na Linha 2. É binário 00100000.

O OR SET

#include #define SET 32char * binbin (int n) -int principal () int bor, resultará-printf ("Digite um valor de 0 a 255: ") -scanf ("% d",&bor) -result = Bor char * binbin (int n) {bin static char [9] -int x-para (x = 0-xlt; 8-x ++) {bin [x] n = & 0x80? `1`: `0`-n lt; lt; = 1-} bin [x] = `` -Retornar (bin) -}

Linha 12 calcula a operação OR entre uma entrada de valor, bor, e a 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 irá ser definido como um valor no 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 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 principal de char int #include [64] -int CH-int x = 0-printf ("Digitar tudo em maiúsculas: ") -fgets (entrada, 63, stdin) -Ao (entrada [x] = `n`) de 32 putchar (CH) -X ++ -! Putchar ( `n`) - retorno (0) -}

Exercício 2: Iniciar um novo projeto usando o código-fonte apresentado 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.


Publicações relacionadas