Pular para o conteúdo

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.
Paulo Dias di4s
Hits: 39.739 Categoria: Shell Script Subcategoria: Introdução
  • Indicar
  • Impressora
  • Denunciar

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

   1. Os operadores
   2. Colocando em prática

JavaScript - Programação orientada a objetos

MathML - Mathematical Markup Language

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

Zoneminder: Substituindo um Unifi NVR

AWK - Manipulação de arquivos de texto

Sed - Introdução

Programar em Shell - Script só para os baixinhos

Variáveis, if, else e unless em Ruby

Cobrando com o SQUID

Explorando a entrada de dados com READ em Bash Shell

#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/

Contribuir com comentário

Entre na sua conta para comentar.