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: 28.173 ]

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

Programação com Shell Script

Zoneminder: Substituindo um Unifi NVR

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

AWK - Manipulação de arquivos de texto

Como criar um box para o Vagrant

Leitura recomendada

Personalize seu shell na entrada de seu logon

Criando um banner em flash no Linux

Introdução ao uso de Shell Script

Trabalhar com array no Bash

Como matar um processo - kill, killall, pkill e xkill

  
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 p4ulodi4s 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
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts