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.
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 => 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.
Um comentário:
Postar um comentário