Bitwise - Escovando os bits

Bitwise é uma técnica que consiste, basicamente, em alterar a sequência de bits de uma variável. Nesse artigo, pretendo mostrar como trabalhar com os principais operadores Bitwise na linguagem C.

[ Hits: 37.622 ]

Por: Paulo Dias em 06/02/2015 | Blog: http://naotenhosite.eu.nao.tenho


Os operadores



Hoje vou mostrar como trabalhar com operadores de bits em C. Essa técnica é conhecida como Bitwise (e também como "escovar bits"). Trata-se, basicamente, de usar alguns operadores para alterar a sequência de bits de uma variável.

Em C, cada variável tem um tipo e cada um desses tipos têm um tamanho diferente (quantidade de bits). Por exemplo, uma variável do tipo "char" tem o tamanho de 8 bits (o que equivale a 1 byte) e uma variável do tipo "int" geralmente tem 32 bits (4 bytes).

Os principais operadores Bitwise, são:
  • Operador & (and)
  • Operador | (or)
  • Operador ^ (xor)
  • Operador ~ (not)
  • Operador >> (right shift)
  • Operador << (left shift)

Esses operadores funcionam da seguinte maneira:

& (and)

O operador & compara os bits de cada variável um por um, quando os dois bits (um da variável "a" e outro da variável "b") são iguais a 1 (bit ligado), o retorno é 1. Caso contrário, o retorno é 0.

char a = 1; // 0000 0001
char b = 5; // 0000 0101

char c = a & b; // 0000 0001

| (or)

O operador | também compara os bits de cada variável um por um, quando pelo menos um dos bits é igual a 1, o retorno é 1. Caso contrário, o retorno é 0.

char a = 1; // 0000 0001
char b = 5; // 0000 0101

char c = a | b; // 0000 0101

^ (xor)

O operador ^ compara os bits de forma que, se os 2 bits (um da variável "a" e outro da variável "b") forem iguais ele, retorna 0. Caso contrário, ele retorna 1.

char a = 1; // 0000 0001
char b = 5; // 0000 0101

char c = a ^ b; // 0000 0100

~ (not)

O operador ~ inverte os bits de uma variável, onde era 1 fica 0 e onde era 0, fica 1.

char a = 1; // 0000 0001

char b = ~a; // 1111 1110

<< (left shift) e >> (right shift)

Os operadores << e >> fazem o deslocamentos dos bits para direita e para a esquerda. Preenchendo o restante com 0.

char a = 1; // 0000 0001
char b = a << 2; // 0000 0100

char c = b >> 2; // 0000 0001

    Próxima página

Páginas do artigo
   1. Os operadores
   2. Colocando em prática
Outros artigos deste autor

Como criar um box para o Vagrant

JavaScript - Programação orientada a objetos

Servidor FTP externo no Ubuntu 12.04 - Criação e configuração

AWK - Manipulação de arquivos de texto

Zoneminder: Substituindo um Unifi NVR

Leitura recomendada

Enviar e-mail pelo terminal com mutt

Cansou do Konsole e GNOME-Terminal? Existem outros terminais, escolha o seu!

Montando, monitorando e gerando logs dos compartilhamento NFS automaticamente

Variáveis, if, else e unless em Ruby

Programar em Shell - Script só para os baixinhos

  
Comentários
[1] Comentário enviado por mcirqueira em 11/02/2015 - 18:36h

foi util sim, muito, vlw, :)

[2] Comentário enviado por Azraelm em 10/09/2016 - 19:23h

Bom artigo. o/

[3] Comentário enviado por di4s em 12/09/2016 - 23:39h

Valeu.



Linux Professional Institute - LPIC-1
Novell Certified Linux Administrator - CLA
Oracle Certified Associate, Java SE Programmer - OCA

http://twitter.com/p4ulodi4s
http://www.prminformatica.com.br/


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts