English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial básico do linguagem C

Controle de fluxo do linguagem C

Função C

Array C

Ponteiro C

String C

Estruturas do linguagem C

Arquivos do linguagem C

Outros C

Manual de referência do linguagem C

Operadores bit a bit do linguagem C

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

operador de E bit a bit &

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)

Exemplo1operador de E bit a bit

#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

operador OU bit a bit |

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)

Exemplo2operador de OU bit a bit

#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

operador XOR (ou exclusivo) ^

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)

Exemplo3exemplo de XOR

#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

operador de complemento bit a bit ~

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)

Exemplo4exemplo de complemento bit a bit

#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

operadores de deslocamento na programação em C:

Existem dois operadores de deslocamento na programação em C:

  • operador de deslocamento para a direita

  • operador de deslocamento para a esquerda.

operador de deslocamento para a direita

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)

operador de deslocamento para a esquerda

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)

Exemplo#5operadores de deslocamento

#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