English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Neste tutorial, você aprenderá por meio de exemplos todos os6operadores bit a bit.
Nos módulos aritméticos lógicos (localizados dentro do CPU), operações matemáticas como adição bit a bit, subtração, multiplicação e divisão são realizadas no nível bit. Para executar operações bit a bit em programação C, use os operadores bit a bit.
Operador | Significado dos operadores |
---|---|
&& | Operação lógica AND bit a bit |
| | Operação lógica OR bit a bit |
^ | Operação lógica exclusiva bit a bit |
~ | Preenchimento bit a bit |
<< | deslocamento para a esquerda |
>> | deslocamento para a direita |
Se os bits correspondentes de dois operandos forem1então a saída bit a bit E é1. Se um bit de um operando for 0, o resultado correspondente é 0.
Vamos supor dois inteiros12e25operação E bit a bit.
12 = 00001100 (binário) 25 = 00011001(binário) 12e25operação bit a bit 00001100 &00011001 ________ 00001000 = 8(decimal)
#include <stdio.h> int main() { int a = 12, b = 25; printf("Saída = %d", a&b); return 0; {}
resultados de saída
Saída = 8
Se pelo menos um bit correspondente de dois operandos for1então a saída bit a bit OU é1. No C programming, | representa o operador OU bit a bit.
12 = 00001100 (binário) 25 = 00011001(binário) 12e25operação OU bit a bit 00001100 | 00011001 ________ 00011101 = 29(decimal)
#include <stdio.h> int main() { int a = 12, b = 25; printf("Saída = %d", a|b); return 0; {}
resultados de saída
Saída = 29
Se os bits correspondentes de dois operandos forem diferentes, o resultado do operador XOR bit a bit é1. Representado por ^.
12 = 00001100 (binário) 25 = 00011001(binário) 12e25operação XOR bit a bit 00001100 ^ 00011001 ________ 00010101 = 21(decimal)
#include <stdio.h> int main() { int a = 12, b = 25; printf("Saída = %d", a^b); return 0; {}
resultados de saída
Saída = 21
O operador de complemento bit a bit é um operador unário (que atua apenas em um operando). Ele altera1modificando para 0, modificar 0 para1. Representado por ~.
35 = 00100011(binário) 35operação de complemento bit a bit 〜00100011 ________ 11011100 = 220 (decimal)
#include <stdio.h> int main() { printf("Saída = %d", ~35); printf("Saída = %d", ~-12); return 0; {}
resultados de saída
Saída = -36 Saída = 11
Existem dois operadores de deslocamento na programação em C:
operador de deslocamento para a direita
operador de deslocamento para a esquerda.
O operador de deslocamento para a direita move todos os bits para a direita uma quantidade específica de lugares. Representado por >>.
212 = 11010100 (binário) 212 >> 2 = 00110101(binário) [deslocamento para a direita dois lugares] 212 >> 7 = 00000001(binário) 212 >> 8 = 00000000 212 >> 0 = 11010100 (sem deslocamento)
O operador de deslocamento para a esquerda move todos os bits para a esquerda uma quantidade específica de lugares. Representado por <<.
212 = 11010100 (binário) 212 << 1 = 110101000 (binário) [deslocamento para a esquerda um lugar] 212 << 0 = 11010100 (deslocamento 0) 212 << 4 = 110101000000 (binário) = 3392(decimal)
#include <stdio.h> int main() { int num=212, i; for (i=0; i<=2; ++i) printf("direita deslocada %d: %d\n", i, num>>i); printf("\n"); for (i=0; i<=2; ++i) printf("esquerda deslocada %d: %d\n", i, num<<i); return 0; {}
Resultados de Saída:
Deslocamento à Direita 0: 212 Deslocamento à Direita 1: 106 Deslocamento à Direita 2: 53 Deslocamento à Esquerda 0: 212 Deslocamento à Esquerda 1: 424 Deslocamento à Esquerda 2: 848