Operador bit a bit em programação C e C++
Publicados: 2022-12-09Na RAM, os dados são organizados como uma sequência de bytes. Cada byte contém oito bits consecutivos. Os operadores bit a bit C e C++ são úteis quando você deseja executar algumas operações aritméticas em bits dos dados. Eles são bem mais rápidos e ocasionalmente são usados para aumentar a eficiência de um programa. Eles trabalham em algoritmos bit a bit que executam operações no nível de bit ou manipulam bits de várias maneiras.
Os tipos de Operador Bitwise em C & C++:
- E bit a bit
- OU bit a bit
- NÃO bit a bit
- Bitwise Exclusive-Or (XOR)
- Operador de turno à esquerda
- Operador de turno direito
Vamos aos detalhes de cada um deles:
Índice
1. E bit a bit:
O operador AND bit a bit em C ou C++ usa um único e comercial (&). Ele recebe dois números como operandos e executa AND em todos os seus bits. O resultado é 1 somente se ambos os bits forem 1. Se qualquer um dos bits for 0, o resultado será 0. Essencialmente, esse operador binário em C & C++ recebe o AND lógico dos bits em todas as posições dos dois números fornecidos em forma binária.
Exemplo:
Suponha que a representação binária de dois números a & b seja:
a = 01011000
b = 10111001
Então, a & b = 00011000
Como visto no exemplo acima, o resultado mostra '1' apenas nos lugares onde ambos os números aeb têm 1. Para todos os outros lugares, o resultado mostra '0'.
2. OU bit a bit:
Em C e C++, OR bit a bit funciona de maneira bastante semelhante a AND bit a bit. A única diferença é que no operador OR bit a bit, para que a posição do bit seja '1' no resultado, apenas um dos dois bits deve ser '1'. Este operador recebe dois números como operandos e executa OR em cada bit dos dois números.
Funciona da seguinte forma:
- Se ambos os bits forem '1', o resultado será '1'.
- Se ambos os bits forem '0', o resultado será '0'.
- Se algum dos bits for '1', o resultado será '1'.
É um dos operadores bit a bit C++ mais simples e usados com mais frequência. Seu símbolo é o cachimbo |. Além disso, é idêntico ao operador lógico booleano ||.
Exemplo:
Suponha que a representação binária de dois números a| b é:
a = 01101001
b = 10111000
Então, um | b = 11111001
3. Bit a bit NOT:
Também conhecido como operador Bitwise NOT, ele inverte cada bit no resultado. Seu símbolo é o til (~). Uma maneira fácil de lembrar o funcionamento desse operador é que o til é ocasionalmente conhecido como twiddle, e o complemento bit a bit gira cada bit. Isso significa que se você tiver um 1, o resultado é 0 e vice-versa. Em outras palavras, esse operador bit a bit em C & C++ pega um número e inverte todos os bits.
Ao determinar o maior valor possível para qualquer número sem sinal, este é um dos operadores bit a bit C++ mais úteis .
Exemplo:
int unsigned num = ~0;
Aqui, 0 significa todos os 0s: 00000000. Portanto, a implementação do operador Bitwise NOT fornece o resultado como 1s: 11111111. Como num é um int sem sinal, você não precisa se preocupar com bits de sinal ou complemento de dois. 1s é o maior número possível no resultado.
Uma das características cruciais do operador Bitwise NOT é o Complemento de 2. O complemento de 2 de um número é igual ao complemento desse número mais 1.
Exemplo:
a = 00000000
Então, seu complemento de 2 = -(11111111+1) = -00000000 = -0(decimal)
Nota: O complemento bit a bit de qualquer número N é igual a -(N+1).
Aprenda Cursos de Desenvolvimento de Software online nas melhores universidades do mundo. Ganhe Programas Executivos de PG, Programas de Certificado Avançado ou Programas de Mestrado para acelerar sua carreira.
4. OR exclusivo bit a bit (XOR):
A operação OU Exclusivo aceita duas entradas e dá como saída 1 se uma ou outra entrada for 1. Mas o resultado é 0 se ambas forem 1. Se ambas as entradas forem 0 ou ambas forem 1, o resultado é 0. O resultado de XOR é 1 apenas se os dois bits forem diferentes. O símbolo desse operador binário em C & C++ é o cursor (^). Além disso, esse operador bit a bit em C & C++ é abreviado como XOR. Ele executa a operação OU exclusivo em cada par de bits. É essencial observar que não há um operador booleano correspondente a esse operador.
Exemplo:
Suponha que temos dois números como
a = 10101010
b = 01110010
Agora a ^ b = 10101010 ^ 01110010 = 11011000
Você pode entender o XOR da seguinte maneira. Suponha que você tenha algum bit, 0 ou 1, que você chama de A. Agora, quando você obtém A XOR 0, obtém A de volta. Então, se A é 1, você obtém 1 e vice-versa. Quando você tira A XOR 1, significa que você inverte A. Então, se A é 1, você obtém 0 e vice-versa.
Se você implementar a operação XOR bit a bit duas vezes, ou seja, tiver dois bits, A e B, e definir C = A XOR B, execute C XOR B. Nesse caso, o resultado obtido é A XOR B XOR C. Ele vira cada bit de A duas vezes ou não vira nenhum bit. Portanto, você simplesmente recebe um A como está.
Você pode considerar a operação XOR binária como uma espécie de giro seletivo. Se você implementar XOR em dois números, um dos quais é todo 1, o resultado será equivalente a um giro.
5. Operador de turno à esquerda:
Este operador bit a bit desloca todos os bits para a esquerda em um determinado número de bits especificados. As posições de bit que o operador shift esquerdo esvaziou são preenchidas com 0. Seu símbolo é <<.
Em C ou C++, ele funciona de forma que primeiro leva dois números, desloca para a esquerda os bits do primeiro operando e o segundo operando indica quantas casas deslocar o número.
Sintaxe:
um <<= 5
Aqui está o exemplo de programa C/C++ para implementar o operador de deslocamento à esquerda:
int main()
{
int a = 5;
um <<= 2;
contagem << “x : ” << x << endl;
}
Saída: a = 20
Cursos e artigos populares sobre engenharia de software
Programas Populares | |||
Programa Executivo PG em Desenvolvimento de Software - IIIT B | Programa de Certificação Blockchain - PURDUE | Programa de Certificação de Segurança Cibernética - PURDUE | MSC em Ciência da Computação - IIIT B |
Outros artigos populares | |||
Salário de engenheiro de nuvem nos EUA 2021-22 | Salário do arquiteto de soluções da AWS nos EUA | Salário do desenvolvedor de back-end nos EUA | Salário do desenvolvedor front-end nos EUA |
Salário do Desenvolvedor Web nos Estados Unidos | Perguntas da entrevista do Scrum Master em 2022 | Como iniciar uma carreira em segurança cibernética em 2022? | Opções de carreira nos EUA para estudantes de engenharia |
6. Operador de turno à direita:
Este operador bit a bit desloca todos os bits para a direita em um determinado número de bits especificados. Seu símbolo é >>. Em C ou C++, esse operador primeiro pega dois números, desloca para a direita os bits do primeiro operando e o segundo operando especifica a quantidade de deslocamento no número.
Sintaxe:
a >>= 5
Um exemplo de programa C/C++ para implementar o operador shift à direita:
int principal() {
int a = 5;
a >> = 2;
contagem << “x : ” << x << endl;
}
Saída: a = 1
Cursos e artigos populares sobre engenharia de software
Programas Populares | |||
Programa Executivo PG em Desenvolvimento de Software - IIIT B | Programa de Certificação Blockchain - PURDUE | Programa de Certificação de Segurança Cibernética - PURDUE | MSC em Ciência da Computação - IIIT B |
Outros artigos populares | |||
Salário de engenheiro de nuvem nos EUA 2021-22 | Salário do arquiteto de soluções da AWS nos EUA | Salário do desenvolvedor de back-end nos EUA | Salário do desenvolvedor front-end nos EUA |
Salário do Desenvolvedor Web nos Estados Unidos | Perguntas da entrevista do Scrum Master em 2022 | Como iniciar uma carreira em segurança cibernética em 2022? | Opções de carreira nos EUA para estudantes de engenharia |
Quando você deve usar os operadores bit a bit em C & C++?
- Economiza espaço:
Os operadores bit a bit ajudam a economizar espaço. Um problema comum encontrado ao trabalhar no nível de bits individuais é que, se você quiser mais espaço ou economizar tempo, pode ser necessário redesenhar grandes partes do seu programa. Mas usar operadores bit a bit em C & C++ pode eliminar dependências; por exemplo, você pode usar ~0 para obter o maior inteiro possível. O deslocamento de bit para multiplicar por dois é uma operação típica. Portanto, isso não afeta a legibilidade, ao contrário do uso avançado da manipulação de bits que pode afetar em alguns casos.
- Criptografia:
Se você estiver trabalhando em algum tipo de criptografia ou em um sistema que precise de campos de bits para armazenar os atributos booleanos.
Fatos exclusivos sobre operadores bit a bit
- O OR bit a bit de dois números é simplesmente a soma desses números se nenhum carry estiver envolvido. Caso contrário, você simplesmente precisa adicionar o AND bit a bit. Por exemplo, suponha que x = 5(101) ey = 2(010). Como não há carry envolvido, a soma é simplesmente x|y. Mas, se agora mudarmos 'x' para 6 (110), a soma mudará para x|y + x&y porque agora o carry está envolvido.
- O operador XOR bit a bit é o mais valioso do ponto de vista da entrevista técnica. Um exemplo de um dos problemas de entrevista relacionados a isso é discutido aqui. “Para o conjunto dado de números que consiste em todos os elementos que ocorrem por um número par de vezes, exceto um número, descubra o número ímpar que ocorre.” Você precisa fazer XOR para todos os números para resolver este problema.
- Os operadores bit a bit de deslocamento à direita e à esquerda não devem ser usados para números negativos. O segundo operando, que determina o número de turnos, contém um número negativo, o que leva a um comportamento indefinido em C & C++. Por exemplo, os resultados de 1 >>- 1 e 1 << -1 são indefinidos.
- O comportamento não é especificado se o deslocamento do número exceder a capacidade do número inteiro. Por exemplo, 1 << 65 não é especificado se inteiros forem armazenados no formato de 64 bits.
- Nenhuma operação de deslocamento ocorre se o segundo operando (aquele que determina o número de deslocamentos) for 0.
Comece sua jornada de Ciência da Computação com o UpGrad:
Se você deseja aprender em detalhes sobre o desenvolvimento de front-end (JavaScript, HTML, CSS), back-end (NoSQL-MongoDB) e microsserviços, pode seguir o curso de Mestrado em Ciência da Computação da UpGrad. Ministrado por IIIT Bangalore e LJMU Alumni Status, este curso ajuda você a conseguir sua carreira como engenheiro de software/desenvolvedor full-stack com os gigantes da tecnologia em todo o mundo.
O curso oferece acesso gratuito ao Career Transition Bootcamp para programadores iniciantes e não técnicos. Você aprenderá mais de dez linguagens e ferramentas de programação neste curso, preparando-o completamente para assumir funções complexas no setor.
Qual é o uso dos operadores bit a bit em C++?
Em C++, os operadores bit a bit executam operações em dados inteiros no nível binário. Eles operam em padrões de bits que envolvem a manipulação de bits individuais. Portanto, uma operação bit a bit também é conhecida como programação em nível de bit. Os operadores bit a bit em C++ são usados principalmente para cálculos mais rápidos, pois trabalham apenas com dois dígitos, ou seja, 0 e 1. Esses operadores também podem fazer testes e deslocar os bits reais.
Você pode usar os operadores shift esquerdo e direito juntos em um código?
Sim, você pode combinar os operadores shift à esquerda e shift à direita e, depois disso, extrair os dados de uma expressão inteira.
O operador complementar inverte toda a sequência do código?
Não, não. Ele inverte os 1s e 0s. Assim, todos os 1s se tornam 0s e vice-versa.
Por que o outro nome do operador de complemento Bitwise é o operador de complemento de alguém?
A razão é que sempre leva apenas um operando ou valor. É um operador unário. Quando você executa um complemento em qualquer bit, todos os 0s se tornam 1s e vice-versa. Por exemplo, se você tiver uma expressão inteira com o valor 1111 0000. Depois de executar a operação de complemento bit a bit, o valor se tornará 0000 1111.