Algumas propriedades dos binários
Autor: Greati | Publicado: 2014-12-20T15:27:00-03:00

Percebi, dia desses, que sei pouco sobre os binários. Eles são números escritos em uma base muito importante para quem gosta de computadores e pretende trabalhar na área de software. Recentemente, a notícia de que a Google precisou adequar os seus servidores para aceitarem representações numéricas de 64-bit, graças à música do Psy - cujo nome prefiro não citar, para atrasar futuros esforços da gigante - corrobora o fato de o quão é importante entender a base 2 e seus efeitos sobre os sistemas de informática.



Além disso, durante minhas experiências com linguagens de alto nível, percebi que utilizo muito dos métodos de conversão de dados, quando não é o próprio interpretador que realiza essas transformações. Será que o que ocorre nesses processos é o caminho mais eficiente? Será que, entendendo melhor os binários, teremos condições de compreender mais os nossos códigos e, assim, poderemos escrever programas melhores? Não sei ao certo, mas, independentemente das respostas, estou seguro do valor de se compreender as nuances, pouquíssimo ensinadas, acerca dos números binários.



Abaixo, estão algumas propriedades interessantes - ou curiosidades, dependendo da importância que você a elas atribui -, listadas aqui como um modo de referência para mim mesmo, e, claro, para quem chegar a esta página.&nbsp;


Pares e ímpares


Terminou em 0? É par.

Terminou em 1? É ímpar.



Por quê? Simples! O último número ser 1 significa somar 1 à soma das potências de dois (que é sempre par), resultando num ímpar.


Divisibilidade por 2n


Se o número termina em n zeros, será divisível por 2n.


Igual a 2n


Se o número contém 1 na posição n e zeros em todas as outras, ele vale 2n.


Igual a 2n - 1


Se o número contém 1's do fim até a posição n-1, com todos os outros bits iguais a 0, ele vale 2n - 1.


Duplicando números rapidamente


Basta deslocar cada bit uma posição à esquerda.



Exemplo: 1010 (10) e 10100 (20).


Dividindo números sem sinal (unsigned) por 2


Basta deslocar os bits uma casa à direita. Se é ímpar, é arredondado para baixo.



Exemplo: 1010 (10) e 101 (5); 1011 (11) e 101 (5).


Quantos bits para guardar uma multiplicação?


Para multiplicar dois binários de n-bit, é necessário um número com, no máximo, 2*n bits para guardar o resultado.


Quantos bits para guardar soma ou subtração?


Para somar ou subtrair dois números com n-bit, nunca serão necessários mais que n+1 bits.


Negativar e subtrair 1 rapidamente


Basta inverter os bits.



Exemplo: 01101 =&gt; 10010, pois, por complemento de dois, a negação é 10011, do qual se subtrai 1, ficando com 10010.


Obtendo 0


Basta somar 1 ao maior número sem sinal (unsigned), para determinado número de bits, claro.


Obtendo o maior número sem sinal (unsigned)


Basta subtrair 1 de 0, para determinado número de bits.


Combinações de n bits.


Sempre, no máximo, 2n.



A explicação, aqui, pode vir do PFC (Princípio Fundamental da Contagem). Se temos 4 bits, temos, digamos, esta situação: __ __ __ __. Cada traço pode receber 2 valores, ou 1 ou 0. Sendo assim, teremos 2*2*2*2 possibilidades, ou 24 = 2n, considerando nosso querido n = 4.


Tudo 1


O número 2n - 1 contém n bits, cada qual possuindo o valor 1.



Exemplo: para n = 4, temos 24 - 1 = 15, o qual corresponde a 1111 em binário.