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.962 ]

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

MathML - Mathematical Markup Language

AWK - Manipulação de arquivos de texto

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

Como criar um box para o Vagrant

Programação com Shell Script

Leitura recomendada

As maravilhas do Shell Script

Trabalhar com array no Bash

Algoritmos em Shell Script

Introdução ao Shell Script (parte 2)

Discar BrasilTelecom com PPPOE no Ubuntu 6.10

  
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