Mostrando postagens com marcador número. Mostrar todas as postagens
Mostrando postagens com marcador número. Mostrar todas as postagens

sábado, 2 de março de 2013

Os dígitos verificadores do CPF/CNPJ

O CPF (Cadastro de Pessoa Física) e o CNPJ (Cadastro Nacional da Pessoa Jurídica) são cadastros para identificar uma pessoa perante a Receita Federal do Brasil. O CPF possui um número com 9 dígitos, denominado raiz, e o CNPJ possui um número com 12 dígitos, raiz mais sufixo. Estes números, são complementados por dígitos verificadores (DV), totalizando 11 dígitos no CPF e 14 dígitos no CNPJ. Estes dígitos verificadores servem para conferir a integridade e autenticidade do número, evitando erros de digitação, números falsos etc. O número do CPF tem o formato xxx.xxx.xxx-vv e o número do CNPJ tem o formato xx.xxx.xxx/xxxx-vv, os dígitos verificadores são os dois últimos, nos dois cadastros.

Cada dígito verificador é calculado separadamente e o primeiro entra no cálculo do segundo. O algoritmo do cálculo é denominado Módulo 11, cada dígito verificador é gerado pelo resto da divisão por 11, e o que é dividido é o somatório dos dígitos do número e seus respectivos pesos.

Os dígitos dos números do CPF e CNPJ recebem pesos antes de serem somados. Para o CPF o peso é crescente em uma unidade de 2 em diante, até a quantidade de dígitos. Para o CNPJ o peso também é crescente em uma unidade de 2 em diante mas até 9, retornando a 2 e repetindo a sequência até a quantidade de dígitos. Esta quantidade de dígitos é ampliada no cálculo do segundo DV pois o primeiro DV entra como parte do número raiz do CPF e CNPJ.

CPF:
Pesos do 1º DV: 2, 3, 4, 5, 6, 7, 8, 9, 10      (para os 9 dígitos do número)
Pesos do 2º DV: 2, 3, 4, 5, 6, 7, 8, 9, 10, 11  (para os 9 dígitos do número mais o 1º DV)

CNPJ:
Pesos do 1º DV: 2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5     (para os 12 dígitos do número)
Pesos do 2º DV: 2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5, 6  (para os 12 dígitos do número mais o 1º DV)

Os dígitos dos números recebem os pesos na ordem do menos significativo ao mais significativo, isto é, da direita para a esquerda. Então a sequência dos pesos fica invertida. Cada dígito é multiplicado ao seu respectivo peso. Os produtos são somados e então divididos por 11.

Cada dígito verificador é gerado a partir do resto desta divisão por 11. Se o resto for 0 ou 1 o dígito verificador será 0, se o resto for maior que 1 o dígito verificador será a subtração de 11 pelo resto. Esta regra é a mesma tanto no CPF como no CNPJ, o que mudam são somente os pesos.

Os exemplos a seguir mostram os cálculos dos dígitos verificadores de um número CPF e de um número CNPJ. Perceba que o primeiro peso da sequência vai para o dígito mais à direita. No cálculo do 1º DV este dígito mais à direita (menos significativo) é a unidade do número raiz no caso do CPF e a unidade do sufixo no caso do CNPJ. Já no cálculo do 2º DV o primeiro peso vai para o 1º DV, que entrou no número à direita:


CPF nº 147.258.369

(1x10)+(4x9)+(7x8)+(2x7)+(5x6)+(8x5)+(3x4)+(6x3)+(9x2)
   10 +  36 +  56 +  14 +  30 +  40 +  12 +  18 +  18  =  234

O resto da divisão de 234 por 11 é 3, portanto o 1º DV é 11-3, que é igual a 8. O CPF fica, por enquanto:

CPF nº 147.258.369-8

(1x11)+(4x10)+(7x9)+(2x8)+(5x7)+(8x6)+(3x5)+(6x4)+(9x3)+(8x2)
  11  +  40  +  63 +  16 +  35 +  48 +  15 +  24 +  27 +  16  =  295

O resto da divisão de 295 por 11 é 9, portanto o 2º DV é 11-9, que é igual a 2. O CPF completo é 147.258.369-82.


CNPJ nº 14.725.836/0001

(1x5)+(4x4)+(7x3)+(2x2)+(5x9)+(8x8)+(3x7)+(6x6)+(0x5)+(0x4)+(0x3)+(1x2)
  5  +  16 +  21 +  4  +  45 +  64 +  21 +  36 +  0  +  0  +  0  +  2  =  214

O resto da divisão de 214 por 11 é 5, portanto o 1º DV é 11-5, que é igual a 6. O CNPJ fica, por enquanto:

CNPJ nº 14.725.836/0001-6

(1x6)+(4x5)+(7x4)+(2x3)+(5x2)+(8x9)+(3x8)+(6x7)+(0x6)+(0x5)+(0x4)+(1x3)+(6x2)
  6  +  20 +  28 +  6  +  10 +  72 +  24 +  42 +  0  +  0  +  0  +  3  +  12 =  223

O resto da divisão de 223 por 11 é 3, portanto o 2º DV é 11-3, que é igual a 8. O CNPJ completo é 14.725.836/0001-68.


Estes cálculos são frequentemente utilizados em sistemas computacionais para testar a veracidade dos números. Impede erros de digitação e detecta números falsos caso alguém queira inventar um número mentalmente. Obviamente, é possível inventar fazendo todos os cálculos para os dígitos verificadores, no entanto, as pessoas normais precisam de pelo menos um lápis e um papel para isso.

Observações: Nos números de CNPJ emitidos antes de 1993 (nesta época ainda era chamado CGC), o 8º dígito (o menos significativo) é um DV módulo 10 dos sete dígitos anteriores. A partir de 1993 o CNPJ não foi mais gerado assim. Os números de CPF e CNPJ usados nos exemplos deste artigo foram inventados por mim, pela posição das teclas em meu teclado. Se estes números estão sendo utilizados por alguém, esta pessoa é sortuda, possui uma sequência de teclas.

quinta-feira, 7 de fevereiro de 2013

Problema de Lógica: Metade e Dobro

Qual é a metade do dobro do dobro da metade de um número?





RESPOSTA





Vamos adotar um número para facilitar o esclarecimento, no exemplo abaixo o número 6. Assim, do fim da frase para o início:

A metade de 6 é 3.
O dobro da metade de 6 é 6.
O dobro do dobro da metade de 6 é 12.
A metade do dobro do dobro da metade de 6 é 6.

Portanto, a metade do dobro do dobro da metade de um número é o próprio número.

sexta-feira, 21 de setembro de 2012

Problema de Lógica: O número ab7

Um número inteiro positivo de três algarismos termina em 7. Se este último algarismo for colocado antes dos outros dois, o novo número formado excede em 21 unidades o dobro do número inicial. Qual é o número inicial?





RESPOSTA





Adotando ab7 como sendo o número inicial, segundo o enunciado temos:

7ab - 2 x ab7 = 21

Decompondo os números em centena, dezena e unidade, tornam-se:

700 + 10a + b - 2(100a + 10b + 7) = 21
700 + 10a + b - 200a - 20b - 14 = 21
700 - 14 + 10a - 200a + b - 20b = 21
686 - 190a - 19b = 21
190a + 19b = 686 - 21
190a + 19b = 665 (divide tudo por 19)
10a + b = 35

Se a está na casa da dezena e b está na casa da unidade, então ab = 35, sendo a = 3 e b = 5. Assim, o número inicial é 357.

735 - 2 x 357 = 21

segunda-feira, 23 de julho de 2012

O número 100

O número 100 é um número bastante especial em nossa sociedade, principalmente por usarmos um sistema numeração decimal. É muito usado de forma positiva como: "100% de aproveitamento", "os 100 melhores", "um século de vida" e nesta semana este blog chegou a 100 mil visitas.

Em alguns casos, o número 100 é usado por ser de um tamanho adequado para a percepção humana. Nem tão restrito quanto o número 10 e nem tão disperso quanto o número 1000. Algo como uma resolução para as coisas, para separá-las em 100 partes.

Por exemplo, muito comum em nosso dia a dia é a razão denominada porcentagem. Que é um modo de expressar uma razão entre dois valores verdadeiros a partir de uma fração com denominador igual a 100. Ou seja, é obtida de uma proporção, onde a razão de base 100 é igualada a razão dos números verdadeiros. O número 100 equivale ao todo. Outro exemplo, no sistema monetário temos o número 100 sendo utilizado como divisor da unidade de moeda, assim temos os centavos, que servem para dar precisão na atribuição dos valores.

Diversas outras situações são dimensionadas e talvez mais utilizadas com base no número 100. Na ciência, citando um exemplo, o número 100 aparece na escala Celsius, de temperatura, onde 100 graus Celsius é a temperatura de ebulição da água (ao nível do mar). Também em unidades de medida, no tempo um século representa 100 anos, em medida de área existe o hectare, que são 100x100 metros quadrados, e em medida de comprimento existe o centímetro, que é um centésimo do metro.

Já no meio esportivo o número 100 tem grande representatividade. No atletismo existe a corrida de 100 metros rasos, que é considerada a principal prova do atletismo; na natação também existe as provas de 100 metros; no futebol americano, a equipe precisa avançar 100 jardas para pontuar contra a equipe adversária.

Pelos exemplos esportivos, quem chega nos 100 é um vitorioso, assim como quem chega aos 100 anos de idade, é uma benção. Como este blog, que chega a 100 mil visitas. É um número de vitória.

Uma curiosidade para o número 100 é um termo criado em 1938 para um número extremamente grande, o número 10 elevado à 100. Este número recebeu o nome "googol". 10 elevado a 100 é igual ao número 1 seguido de 100 zeros, um número muito grande. O nome do site de pesquisa mais famoso do mundo, que nós conhecemos bem, foi baseado nesta palavra, seus fundadores queriam um nome que fosse relacionado a uma grande quantidade, pois era a quantidade de páginas classificadas pelo mecanismo de busca.

Na matemática o número 100 aparece em algumas operações aritméticas muito interessantes. É possível realizar com apenas as operações de soma e subtração, aplicadas entre os dígitos da sequência de 1 à 9 (123456789), expressões que resultem no número 100. Veja em: http://dan-scientia.blogspot.com.br/2011/02/curiosidades-aritmeticas-para-o-numero.html

Há pouco mais de um ano atrás, apresentei parte do conteúdo deste artigo em um programa de televisão, que na ocasião completava a centésima edição. Na sua edição de número 100, o programa, de propósito jornalístico, fez diversas reportagens sobre lugares, entidades e pessoas com um século de vida.

Obrigado à todos pelas 100.000 visitas neste blog!

sexta-feira, 29 de junho de 2012

Problema de Lógica: Razão entre netos e netas

Um avô deu R$ 2 para cada um de seus netos e netas. Após uma brincadeira, onde apostaram entre si o dinheiro ganho, cada neta terminou com R$ 5 e cada neto ficou com R$ 1. Qual a razão entre o número de netos e netas do avô?





RESPOSTA





Considerando que o número de netos = m e o número de netas = f. A equação da distribuição do dinheiro antes e após a brincadeira é:

2m + 2f = m + 5f

Simplificando a equação:

2m - m = 5f - 2f
m = 3f
m/f = 3

Portanto, a razão entre o número de netos e netas é 3.

segunda-feira, 2 de abril de 2012

Problema de Lógica: Andares e apartamentos

Evandro e Augusto moram no mesmo edifício. O número do andar de Evandro coincide com o número do apartamento de Augusto e a soma dos números dos dois apartamentos é 56. Se cada andar tem 12 apartamentos, numerados de 1 a 12 no primeiro andar, de 13 a 24 no segundo andar e assim por diante, quais os números dos apartamentos de Augusto e Evandro?





RESPOSTA





Se o número do andar de Evandro é o mesmo número do apartamento de Augusto e a soma dos números dos dois apartamentos é 56, então a soma do número do apartamento de Evandro com o número do andar de Evandro também é 56:

Se: andar(E) = apto(A)
e: apto(E) + apto(A) = 56
então: apto(E) + andar(E) = 56

Somente no quinto andar é possível uma soma que resulte em 56, assim, andar 5 + apto 51 = 56.

Portanto, os números dos apartamentos de Augusto e Evandro são 5 e 51.

segunda-feira, 30 de janeiro de 2012

Brincadeira de adivinhar um número na calculadora

Algumas calculadoras, mesmo as simples, possuem uma funcionalidade na tecla = (igual), talvez associada à função de repetição ou função de cálculo contínuo, que quando pressionada, após a exibição do resultado de um cálculo, repete a última operação.

Para testar se a calculadora possui esta funcionalidade, por exemplo, tecle 1 + 1 e tecle = repetidamente. Se o resultado receber incrementos de 1 a cada pressionamento da tecla = então a calculadora possui esta funcionalidade.

Nestas calculadoras é possível fazer uma brincadeira de adivinhação de um número. Uma pessoa programa a calculadora, escolhendo um número de quantos dígitos desejar e passa a calculadora para outra pessoa, a qual irá descobrir o número digitando seus palpites.

Para programar a calculadora nesta brincadeira, entre com um número de quantos dígitos preferir. Um bom tamanho é um número de quatro dígitos. Divida este número por ele mesmo e tecle =. O resultado será obviamente 1. Pronto, a calculadora está programada. Não tecle mais nada e passe a calculadora para a outra pessoa.

Exemplo, sequência de teclas para programar o número 3647:

3 6 4 7 : 3 6 4 7 =

Para realizar as tentativas a pessoa deve digitar os números e teclando = após cada palpite. Se o palpite for menor que o número correto, o resultado será menor que 1 (zero vírgula alguma coisa). Se o palpite for maior que o número correto, o resultado será maior que 1 (um vírgula alguma coisa). Quando acertar o número, o resultado será exatamente 1.

Exemplo, adivinhando o número acima:

[Palpite 1] 5 5 5 5 = (a calculadora retorna 1,5232 - o palpite é maior)
[Palpite 2] 3 3 3 3 = (a calculadora retorna 0,9139 - o palpite é menor)
[Palpite 3] 3 6 4 7 = (a calculadora retorna 1 - o palpite está certo)

A brincadeira se desenvolve nestas tentativas, digitando um número e teclando =, para que o resultado se aproxime de 1. Quanto maior o número de dígitos, maior a dificuldade. Pode-se informar ao adivinhante quantos dígitos tem o número, ou não.

Ainda não encontrei uma documentação que explique esta funcionalidade das calculadoras, não é exatamente a função de cálculo contínuo pois esta função aproveita o resultado na operação seguinte. Nas tentativas, quando digita-se o palpite e a tecla =, o resultado das operações é o palpite dividido pelo número certo.

Infelizmente não é toda calculadora que aceita esta brincadeira. Nas mais simplezinhas costuma funcionar. Numa científica, toda poderosa, provavelmente não. Em uma com RPN, acredito que não.

sábado, 17 de dezembro de 2011

Problema de Lógica: Igualdade entre produtos com dígitos invertidos

23 x 96 = 32 x 69

Surpreendentemente, existem vários pares semelhantes de números com dois dígitos onde seus produtos permanecem o mesmo quando as ordens dos dígitos são invertidas. Quantos pares de números você pode descobrir?





RESPOSTA





Evidentemente, se os números com dois dígitos são ambos formados por dígitos repetidos, como 22 e 55, então inverter a ordem dos dígitos mantém os números inalterados, assim os produtos serão os mesmos. Além disso, se o segundo número é formado pela inversão dos dígitos do primeiro número, por exemplo 12 e 21, então os mesmos números serão obtidos na inversão dos dígitos.

Suponha que os dois números são ab e cd, e depois queremos que seu produto seja igual ao produto de ba e dc. Isto pode ser expresso algebricamente como:

(10a + b) x (10c + d) = (1Ob + a) x (1Od + c)

na qual:

1OOac + 1Oad + 1Obc + bd = 100bd + 1Obc + 1Oad + ac

e simplificando:

99ac = 99bd

Então, os números satisfazem a condição requerida quando seus dígitos satisfazem:

ac = bd

Isto é equivalente ao produto dos dígitos da dezena sendo igual ao produto dos dígitos da unidade, dando as seguintes soluções:

12 x 42 = 21 x 24
12 x 63 = 21 x 36
13 x 62 = 31 x 26
12 x 84 = 21 x 48
14 x 82 = 41 x 28
13 x 93 = 31 x 39
23 x 64 = 33 x 46
24 x 63 = 42 x 36
24 x 84 = 42 x 48
23 x 96 = 32 x 69
26 x 93 = 62 x 39
34 x 86 = 43 x 68
36 x 84 = 63 x 48
46 x 96 = 64 x 69

sábado, 15 de outubro de 2011

Problema de Lógica: Qual o mínimo de pessoas parentes?

Contando somente o parentesco que existe entre nós, somos pai, mãe, filho, filha, tio, tia, irmão, irmã, sobrinho, sobrinha e dois primos. Qual é o menor número de pessoas que poderiam ter feito tal afirmação?





RESPOSTA





Quatro pessoas: um irmão, uma irmã e seus filhos, um de cada sexo.

domingo, 27 de fevereiro de 2011

Conheça a cripto-aritmética

Cripto-aritmética é um quebra-cabeça matemático, onde os dígitos são substituídos por letras ou símbolos, na transcrição de uma operação aritmética clássica, em uma equação, cujo objetivo é o descobrimento dos dígitos originais.

Nestes quebra-cabeças cada letra é usada para representar um dígito distinto. Os números não podem iniciar com zero. As variações podem conter asteriscos substituindo os dígitos e assim, esta posição poderá conter qualquer dígito. Veja um exemplo:

     ABC
x    BAC
--------
    ****
+   **A
  ***B
--------
  ******

A cripto-aritmética é um procedimento de criptografar por substituição uma equação matemática, de uma operação aritmética clássica, e que a chave é uma regra matemática.

Quando as letras usadas para representar os dígitos distintos formam palavras ou frases com sentido, esta cripto-aritmética é denominada alfamético. Um alfamético também é uma operação aritmética e sua solução também respeita a regra matemática. A seguir o alfamético mais famoso:

  SEND
+ MORE
------
 MONEY

Um tipo de alfamético denominado "duplamente-verdadeiro" é formado por palavras numéricas cuja leitura produz também uma soma válida. Veja este exemplo de alfamético duplamente-verdadeiro:

  CINCO
+ CINCO
  CINCO
-------
 QUINZE

Solucionar uma cripto-aritmética envolve uma mistura de lógica, dedução e teste de possibilidades. As propriedades das operações aritméticas podem ser percebidas e usadas para eliminar algumas hipóteses. Por exemplo, se a soma de 2 números representados por A + B resulta em um total com duas casas BC, unidade e dezena, então é evidente que B = 1, pois o valor máximo que BC pode assumir é 9 + 8 = 17.

A seguir duas soluções para quebra-cabeças de cripto-aritmética:

1) Um número de três dígitos distintos, escrito como ABC, onde C é o dígito da unidade, B é o da dezena e A é o da centena, é desconhecido. Qual é este número? Sabendo que:

     ABC
x    BAC
--------
    ****
+   **A
  ***B
--------
  ******

Solução:

Podemos observar que nem A, nem B, nem C são zero, pois se fossem não poderíamos obter três linhas de produtos parciais.

Observamos também que o produto C x A termina em A e o produto C x B termina em B. De onde deduzimos, pela tabuada, pois outros números não possuem propriedade semelhante, que C só pode ser 1 ou 6. Contudo, se C fosse 1, o primeiro produto parcial não seria de quatro dígitos, mas de apenas três. Portanto, C = 6.

Sendo C = 6, então A e B só pode ser 2, 4 ou 8, como se esclarece com os exemplos:

6 x 2 = 12
6 x 4 = 24
6 x 8 = 48

Como o segundo produto parcial é de apenas três dígitos, então A não pode ser 4 ou 8, e portanto A = 2.

Agora temos duas possibilidades para B, ou B = 4 ou B = 8. Sendo A = 2, se B fosse 4, o terceiro produto parcial seria composto por três dígitos, em vez de quatro, desta forma, B = 8.

Assim, temos, A = 2, B = 8, C = 6. O número desconhecido é 286 e a multiplicação é a seguinte:

     286
x    826
--------
    1716
+   572
  2288
--------
  236236

2) Quais são os números do alfamético abaixo?

  SEND
+ MORE
------
 MONEY

Solução:

A letra M do resultado somente pode ser M = 1 pois é a única possibilidade em uma soma de dois números de quatro dígitos com resultado de cinco dígitos.

Para resultar o 1 no M do resultado, S + M é pelo menos 9. Sendo M = 1, S é 8 ou 9 e S + M é 9 ou 10, o que resulta em O igual a 0 ou 1. Mas M = 1 então O = 0.

Se ocorresse o transporte de 1 da coluna da centena (E + O) para a coluna do milhar (S + M), E seria 9 e N seria 0. Mas O = 0, desta forma não houve transporte de 1 e então S = 9.

Se não houvesse o transporte de 1 da coluna da dezena (N + R) para a coluna da centena (E + O), E seria igual a N, o que é impossível. Então houve um transporte e N = E + 1.

Se não houvesse o transporte de 1 da coluna da unidade (D + E) para a coluna da dezena (N + R), N + R seria igual a E + 10. Com N = E + 1, E + 1 + R seria igual a E + 10 e assim R seria 9. Mas S = 9, então houve um transporte e R = 8.

Para produzir o transporte de 1 da coluna da unidade (D + E) para a coluna da dezena (N + R) é necessário que D + E seja igual a 10 + Y. Como Y não pode ser 0 ou 1, D + E é pelo menos 12. Como D é no máximo 7, então E é no mínimo 5. Além disso, N é no máximo 7 e N = E + 1. Assim E é 5 ou 6.

Se E for 6 então para fazer D + E ser pelo menos 12, D precisa ser 7. Mas N = E + 1 então N também será 7, o que é impossível. Então E = 5 e N = 6.

Para fazer D + E ser pelo menos 12 é preciso ter D = 7 e então Y = 2.

A solução deste quebra-cabeça é O = 0, M = 1, Y = 2, E = 5, N = 6, D = 7, R = 8 e S = 9. E a equação fica:

  9567
+ 1085
------
 10652

terça-feira, 11 de janeiro de 2011

Problema de Lógica: Número de caramelos na taça

Num concurso de televisão três concorrentes procuram acertar o número de caramelos contidos numa taça de cristal. José diz que há 260, Maria crê que há 274 e Carlota propõe que sejam 234. Sabe-se que um deles se enganou em 9 caramelos, outro em 17 e outro em 31. Qual o número de caramelos na taça?





RESPOSTA





Como não sabemos precisamente qual foi o engano de cada um, vamos montar uma tabela com todos os enganos, tanto para mais como para menos, para cada palpite dado, e assim, calcular os possíveis valores:

     260  274  234
------------------
+9   269  283  243
-9   251  265  225
+17  277  291  251
-17  243  257  217
+31  291  305  265
-31  229  243  203

O número correto será aquele que repetir três vezes, estando em colunas (palpites) diferentes e linhas (enganos) diferentes. Este número é o 243. José com seu palpite de 260, errou em 17 unidades, Maria com seu palpite de 274, errou em 31 unidades, e Carlota com seu palpite de 234, errou em 9 unidades. Portanto na taça há 243 caramelos.

sábado, 17 de julho de 2010

Problema de Lógica: Número de moedas nas caixas

Atenção, resposta após o problema!

Você possui dez caixas vazias e deve distribuir nessas caixas 1000 moedas de tal forma que, quando solicitado, você possa retornar um número qualquer de moedas sem retirá-las das caixas. Cada caixa comporta pelo menos 1000 moedas e os valores solicitados serão todos maiores que zero.





RESPOSTA





O propósito deste problema é formar uma distribuição de moedas que permita retornar qualquer número decimal de 1 até 1000. Qualquer número poderá ser formado somando as quantidades de moedas de determinadas caixas, utilizando uma, algumas ou todas as caixas. Isto é possível se distribuir as moedas seguindo a sequencia das potências de 2. Qualquer número decimal pode ser representado no sistema de representação binário, de base 2, pois é justamente este sistema que é utilizado nos computadores. Então, se distribuir as moedas nas dez caixas colocando em cada caixa as respectivas quantidades de 1, 2, 4, 8, 16, 32, 64, 128, 256 e 489, este problema será resolvido. Observação, 489 não é o próximo valor da sequencia mas é o restante das moedas.

sábado, 6 de março de 2010

Quantos endereços IP podem existir?

O Protocolo de Internet, ou o acrônimo IP, que é um protocolo de comunicação usado entre duas ou mais máquinas em rede, possui em seu cabeçalho uma forma de endereçamento para identificar a rede e o host da origem e do destino.

O endereço IP, na versão 4 (IPv4), é um número de 32 bits escrito com quatro octetos representados em número decimal, por exemplo 192.168.1.87. Um octeto é um byte, ou seja, 8 bits. Um bit representa dois valores, 0 ou 1, e um byte representa 8 bits, desta forma um octeto é capaz de representar 256 números binários, ou 2 elevado a 8.

Como cada octeto teoricamente pode variar em um valor de 0 à 255 (00000000 à 11111111), o número máximo possível de endereços IPv4 é 256 elevado a 4, ou 2 elevado a 32, que é igual à 4.294.967.296 endereços. Na prática não são todos os endereços disponíveis pois existem classes especiais para diversas classificações de rede, além dos números reservados para máscara de rede e broadcast.

Entretanto, existe uma outra versão do IP, a versão 6 (IPv6), que utiliza um número de 128 bits. Os endereços IPv6 são escritos com oito grupos de 4 dígitos hexadecimais, por exemplo a0ef:74bc:23d8:8bbc:1845:2e8a:3007:4773.

Cada grupo é capaz de representar 65536 números hexadecimais, ou seja de 0000 à FFFF (0 à 65535), então o número máximo possível de endereços IPv6 é 65536 elevado a 8, ou 2 elevado a 128, que é igual à 340.282.366.920.938.463.463.374.607.431.768.211.456 endereços.

Provavelmente em breve, o IPv6 irá substituir o IPv4, pois a previsão para o início do esgotamento dos endereços IPv4 livres é Setembro de 2011, sendo assim é inevitável a implementação do IPv6.

quarta-feira, 17 de fevereiro de 2010

O segredo de descobrir o número pelas cartelas mágicas

Uma mágica matemática bastante conhecida é a de descobrir um número, que foi escolhido por outra pessoa e que está presente em pelo menos uma das cartelas fornecidas, contendo conjuntos numéricos. Simplesmente uma pessoa escolhe um número qualquer nas cartelas, depois diz em quais cartelas o número aparece e rapidamente o "mágico" diz o número que foi escolhido.

Vamos tomar por exemplo os conjuntos numéricos abaixo. Estes conjuntos contém números de 1 à 50 distribuídos entre eles. Com alguns números aparecendo em dois ou mais conjuntos e alguns números não aparecendo em determinados conjuntos:

1) 01, 03, 05, 09, 07, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49.

2) 02, 03, 06, 07, 10, 11, 14, 15, 18, 19, 22, 23, 26, 27, 30, 31, 34, 35, 38, 39, 42, 43, 46, 47, 50.

3) 04, 05, 06, 07, 12, 13, 14, 15, 20, 21, 22, 23, 28, 29, 30, 31, 36, 37, 38, 39, 44, 45, 46, 47.

4) 08, 09, 10, 11, 12, 13, 14, 15, 24, 25, 26, 27, 28, 29, 30, 31, 40, 41, 42, 43, 44, 45, 46, 47.

5) 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 48, 49, 50.

6) 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50.

A solução é: Quando uma pessoa escolhe um número e diz em quais cartelas o número aparece, o número escolhido é igual ao somatório do primeiro número de cada cartela em que o número pertence, ou seja, se foi escolhido o número 22, logo foi dito que ele está nas cartelas de nº 2, 3 e 5. Então o número escolhido é 2+4+16 = 22.

Para poder realizar esta mágica é preciso distribuir os números fazendo a conversão deles para a base 2. Os conjuntos são formados de acordo com a posição dos algarismos 0 e 1 no número em base binária.

O conjunto nº 1 recebe os números que contenham o algarismo 1 na posição 2^0 em sua representação binária. O conjunto nº 2 recebe os números que contenham o algarismo 1 na posição 2^1. Da mesma forma é formado os conjuntos seguintes, finalizando com o conjunto nº 6, que recebe os números que contenham o algarismo 1 na posição 2^5. O algarismo 0 indica que o número não pertence ao conjunto desta posição.

Assim, voltando ao exemplo com o número 22, onde sua representação binária é 010110. Visualizando da direita para a esquerda, do algarismo menos significativo para o mais significativo, o algarismo 1 aparece nas posições 2^1, 2^2 e 2^4, portanto o número 22 vai para os conjuntos nº 2, 3 e 5. O zero nas posições 2^0, 2^3 e 2^5 indica que o número 22 não vai para os conjuntos nº 1, 4 e 6.

Um truque simples mas que causa uma grande surpresa na adivinhação.

terça-feira, 2 de fevereiro de 2010

Problema de Lógica: O número de carneiros

Atenção, resposta logo após o problema!

Um pastor diz ao outro:
- Dê-me um de seus carneiros que ficaremos com igual número de carneiros.
O outro responde:
- Nada disso, dê-me um de seus carneiros que ficarei com o dobro dos seus.
Nenhum pedido foi atendido. Quantos carneiros tem cada um?





RESPOSTA





Cinco e sete, respectivamente. Se o primeiro pedido fosse atendido eles ficariam com seis carneiros para cada. Se o segundo pedido fosse atendido eles ficariam com quatro carneiros para um pastor e oito para o outro.

sábado, 22 de agosto de 2009

Notação de Knuth para números inteiros gigantes

Na matemática, a notação de Knuth é um sistema de representação para números inteiros muito grandes. Foi desenvolvida pelo matemático americano Donald Knuth em 1976. Está fortemente relacionada com a função Ackermann e seu conceito é baseado em exponenciação iterativa, do mesmo modo que exponenciação é semelhante à multiplicação iterativa e multiplicação é similar à adição iterativa.

A notação utiliza setas apontando para cima (↑) entre os números, daí o nome original em inglês "Knuth's up-arrow notation". Neste texto usarei o caractere | para representar a seta para cima.

Um operador de uma única seta para cima é o mesmo que exponenciação. Uma multiplicação de n termos do número m:

m|n = m x m x ... x m = m^n

Duas setas para cima juntas representam uma torre de potências. Uma torre de altura n, ou simplesmente m elevado à potência por ele mesmo, n vezes, incluindo a base até o expoente mais superior:

m||n = m|m|m|...|m = m^m^m^...^m

A operação de duas setas é uma função exponencial iterada conhecida como tetração que rapidamente gera números enormes. Por exemplo:

2||2 = 2|2 = 4
2||3 = 2|2|2 = 2|4 = 16
2||4 = 2|2|2|2 = 2|16 = 65536
3||2 = 3|3 = 27
3||3 = 3|3|3 = 3|27 = 7625597484987
3||4 = 3|3|3|3 = 3|3|27 = 3^7625597484987

Três setas para cima juntas representam uma operação vastamente mais poderosa, é uma torre de potências de uma torre de potências, é uma iteração de n termos m em uma operação de tetração:

m|||n = m||m||...||m

Por exemplo:

2|||2 = 2||2 = 4
2|||3 = 2||2||2 = 2||4 = 65 536
2|||4 = 2||2||2||2 = 2||65536 = 2|2|...|2 (65 536 termos)
3|||2 = 3||3 = 7625597484987
3|||3 = 3||3||3 = 3||7625597484987 = 3|3|...|3 (uma torre de 7625597484987 camadas de altura)
3|||4 = 3||3||3||3 = 3||3||7625597484987 = 3||3|...|3 (uma torre de 3||7625597484987 camadas de altura)

Similarmente avança-se para um operador quatro setas para cima, onde seguindo a regra geral, um operador n-setas se expande em operadores (n-1)-setas, com n termos m:

m||||n = m|||m|||...|||m

Por exemplo:

2||||2 = 2|||2 = 4
2||||3 = 2|||2|||2 = 2|||4 = 2|2|...|2 (65536 termos)
2||||4 = 2|||2|||2|||2 = 2|||2|2|...|2 (65536 termos)
3||||2 = 3|||3 = 3|3|...|3 (7625597484987 termos)
3||||3 = 3|||3|||3 = 3|||3|3|...|3 (7625597484987 termos) = 3||3|3|...|3 (3|3|...|3 (7625597484987 termos) termos)

A notação de Knuth pode se expandir de uma forma incrivelmente longa, se tornando maçante, mas é uma forma mais prática de representar números inteiros extremamente grandes, como os que são retornados pela função de Ackermann:

A(4,2) = 2||5 - 3 = 2^65536 - 3 = um número com 19729 dígitos decimais!

sexta-feira, 29 de maio de 2009

Contando as estrelas

A maioria das estrelas não podem ser vistas a olho nu, o olho humano sem ajuda ótica só consegue enxergar um astro de até sexta magnitude, portanto sem alcançar alguma estrela além da nossa galáxia. Desta forma torna-se necessário o uso dos telescópios para poder enxergar mais adiante.

O universo visível é o espaço máximo no qual o homem pode enxergar com o uso do mais potente telescópio e este alcance vem aumentando com os avanços da tecnologia.

Em 2004 o centro de operações do telescópio espacial Hubble divulgou uma imagem de uma observação do espaço profundo. Esta observação detectou objetos de até 30ª magnitude e foi chamada de "Hubble Ultra Deep Field" (HUDF).

O telescópio Hubble capturou 800 exposições de um mesmo ponto distante por durante quatro meses, realizando 400 órbitas no planeta, com duas exposições por órbita. Isto aconteceu entre 24 de setembro de 2003 à 16 de janeiro de 2004 e acumulou um total de 11,3 horas de tempo de exposição.

Dentro deste campo ultra profundo foram coletadas aproximadamente 10.000 galáxias. Toda a área da esfera celeste é 12,7 milhões de vezes maior do que este minúsculo campo observado pelo telescópio Hubble. Sendo assim, se extrapolar esta contagem para todo o céu, terá uma estimativa de 127 bilhões de galáxias.

Uma galáxia típica tem aproximadamente 200 bilhões de estrelas. Multiplicando pelo número de galáxias tem-se um total de 25,4 sextilhões (2,54x10^22) de estrelas. Lembre-se, isto enxergando objetos até 30ª magnitude.

Quer ver todos os zeros?

25.400.000.000.000.000.000.000

Segue a imagem capturada pelo telescópio Hubble:

terça-feira, 19 de maio de 2009

Um método para calcular o quadrado de um número

Dados um número real a e um número natural n maior que um, chama-se potência enésima de a, e indica-se por an, o produto de n fatores iguais a a. Para o quadrado de um número ou segunda potência de um número o cálculo é a x a. Por exemplo: 6² = 6x6 = 36.

No entanto Pitágoras com seu estudo sobre os números figurados percebeu na seqüência dos números quadrados que a soma dos n primeiros números ímpares vale n².

Deste modo pode-se dizer que este é um outro método para o cálculo do quadrado de um número. Veja:

1² é igual ao primeiro número ímpar: 1
2² é igual a soma dos dois primeiros números ímpares: 1+3 = 4
3² é igual a soma dos três primeiros números ímpares: 1+3+5 = 9
4² é igual a soma dos quatro primeiros números ímpares: 1+3+5+7 = 16

Isto vale para qualquer quadrado de um número natural maior que zero.

segunda-feira, 18 de maio de 2009

Cálculo do número Pi

O número Pi é definido como sendo o valor da razão de comprimento da circunferência pelo diâmetro, assim Pi = c/2r. Trata-se de um número irracional pois não se pode expressar como quociente de dois números inteiros e é expresso por uma dízima infinita que não apresenta comportamento periódico. É representado pela letra grega π.

Nas civilizações antigas, acerca de 4000 anos atrás, já se conheciam a razão entre o perímetro e o diâmetro de qualquer círculo e desde alguns séculos antes de Cristo o número Pi vem sendo calculado pelos matemáticos buscando-se um número cada vez maior de casas decimais. O primeiro matemático a investigar o número Pi foi Archimedes (287-212 a.C.). Ele construiu polígonos regulares inscritos e circunscritos em uma circunferência e calculou o perímetro destes polígonos, quanto mais lados ele colocava no polígono, melhor ficava a aproximação. Usando um polígono de 96 lados, Archimedes descobriu que Pi ficava entre 3,140845 e 3,142857. Uma fração que muito se aproxima do valor de Pi, com um erro menor que 10^-6, é 355/113. A irracionalidade de Pi foi demonstrada em 1761 por Johann Heinrich Lambert.

Atualmente com a ajuda dos computadores já é possível determinar o número Pi com centenas de milhões de casas decimais. Em Setembro de 2002, Yasumasa Kanada atinge a marca de 1,24 trilhão de casas decimais, usando um conjunto de 64 supercomputadores Hitachi SR8000/MPP na forma de cluster, que trabalharam por 602 horas transferindo 400 terabytes de dados, na Universidade de Tóquio.

Abaixo veremos alguns métodos usados para o cálculo desde a sua origem histórica até os anos atuais:

Liu Hui 265 a.C.:


Zu Chongzhi 480:


Newton 1676:


Madhava - Leibniz 1682:


Machin 1706:


Euler 1738:


Gauss:


Störmer 1896:


Ramanujan 1914:


Takano 1982:


David Chudnovsky e Gregory Chudnovsky 1987:


David Bailey, Peter Borwein e Simon Plouffe 1997:


O número Pi com mil dígitos é:

3.14159265358979323846264338327950288419716939937510582097494459230781\
6406286208998628034825342117067982148086513282306647093844609550582231\
7253594081284811174502841027019385211055596446229489549303819644288109\
7566593344612847564823378678316527120190914564856692346034861045432664\
8213393607260249141273724587006606315588174881520920962829254091715364\
3678925903600113305305488204665213841469519415116094330572703657595919\
5309218611738193261179310511854807446237996274956735188575272489122793\
8183011949129833673362440656643086021394946395224737190702179860943702\
7705392171762931767523846748184676694051320005681271452635608277857713\
4275778960917363717872146844090122495343014654958537105079227968925892\
3542019956112129021960864034418159813629774771309960518707211349999998\
3729780499510597317328160963185950244594553469083026425223082533446850\
3526193118817101000313783875288658753320838142061717766914730359825349\
0428755468731159562863882353787593751957781857780532171226806613001927\
876611195909216420199

sábado, 9 de maio de 2009

Números binários

Em um sistema de representação binário (base 2) os números decimais (base 10) são representados somente pelos algarismos 0 e 1. Como por exemplo o número decimal 91 no sistema binário fica 01011011. Sabe-se que uma das técnicas mais famosas para conversão de decimal para binário é a divisão repetidamente do número decimal por 2 até que se obtenha o quociente 1 , o conjunto dos algarismos iniciado pelo último quociente e voltando por todos os restos até o primeiro forma a representação do número binário, por exemplo o cálculo para conversão de 234:

234 : 2
0 117 : 2
1 58 : 2
0 29 : 2
1 14 : 2
0 7 : 2
1 3 : 2
1 1 <-

Então 234 no sistema binário fica 11101010.

Já para a conversão de binário para decimal utiliza-se a seguinte fórmula:

N = d x b^n-1 + d x b^n-2 + ... + d x b^1 + d x b^0

Sendo d cada algarismo do número, n o número total de algarismos tendo n-1 como a posição do algarismo e b indica a base do número.

Convertendo 01011011 para decimal usando a fórmula fica (pode-se ignorar o zero mais à esquerda):

N = 1 x 2^6 + 0 x 2^5 + 1 x 2^4 + 1 x 2^3 + 0 x 2^2 + 1 x 2^1 + 1 x 2^0
N = 1 x 64 + 0 x 32 + 1 x 16 + 1 x 8 + 0 x 4 + 1 x 2 + 1 x 1
N = 64 + 0 + 16 + 8 + 0 + 2 + 1
N = 91


Entretanto o sistema de representação binário tem uma lógica de evolução dos números que apenas visualmente é possível mentalizar o resultado da conversão, inclusive no sentido oposto, decimal para binário e binário para decimal. Vamos então primeiro para a evolução dos números. Tomando para a explanação o conjunto de números decimais de 0 a 255, em binário vai de 00000000 a 11111111, o início da seqüencia é:

  0   00000000
1 00000001
2 00000010
3 00000011
4 00000100
5 00000101
6 00000110
7 00000111
8 00001000
9 00001001
10 00001010
...


Pela seqüencia percebe-se que os algarismos 1 vão aparecendo na representação da direita para a esquerda. A posição do primeiro algarismo 1 à esquerda só é modificada para a próxima casa à esquerda quando todas as outras casas à direita tornam-se 1 e com este movimento todas as casas à direita retornam para o algarismo 0, iniciando novamente uma nova evolução para completar as casas da direita com 1 e assim mover mais uma vez o algarismo 1 da esquerda para mais uma casa à esquerda.

É aí que temos um fato interessante. Todos conhecem a famosa seqüencia das potências de 2 que é 1, 2, 4, 8, 16, 32, 64, 128 etc. Acontece que para cada um desses números decimais quando representados no sistema binário apenas um algarismo 1 é contido na representação. Por exemplo:

  1   00000001
2 00000010
4 00000100
8 00001000
16 00010000
32 00100000
64 01000000
128 10000000


Então dado um número representado no sistema binário, se observarmos o algarismo 1 mais à esquerda em uma determinada casa significa que o número decimal será pelo menos igual ou maior, caso tenha outro algarismo 1 à direita, a potência representada nesta determinada casa. Exemplo, em 00100110 o algarismo 1 mais à esquerda está na casa da potência 32, como tem outros algarismos 1 à direita este número é maior que 32, e obviamente menor que 64. Sendo assim onde tiver o algarismo 1 o valor de sua respectiva potência de 2 será acrescentado ao número decimal.

Agora ficou fácil. Para encontrar o número exato basta somar as potências de 2 onde o algarismo é 1. Deste modo 00100110 tem o algarismo 1 nas casas das potências 32, 4 e 2, que somando resulta 38.

Voltando à conversão de decimal para binário (base 10 para base 2) o procedimento também é simples e inverso. Dado um número decimal, inicialmente encontra-se a primeira potência de 2 com o valor menor. Partindo deste valor vai-se somando as próximas potências menores, ignorando as que façam o resultado da soma ultrapassar, até que o resultado seja igual ao número decimal. A representação no sistema binário será colocando o algarismo 1 nas casas onde foram usadas as potências para a soma. Exemplificando, o número decimal 91 utilizará a soma das potências 64, 16, 8, 2 e 1 para igualar o seu valor, assim sua conversão para o número binário será 01011011.

Referências:

GUNTZEL, J. L. & NASCIMENTO, F. A. Introdução aos Sistemas Digitais, 2001.
MONTEIRO, M. A. Introdução à Organização de Computadores, 4ª Edição, LTC, 2005.
PATTERSON, D. A. & HENNESSY, J. L. Organização e Projeto de Computadores: A Interface Hardware/Software, 3ª Edição, Ed. Campus, 2005.
STALLINGS, W. Arquitetura e Organização de Computadores, 5ª Edição, Prentice-Hall, 2002.
TANENBAUM, A. S. Organização Estruturada de Computadores, 4ª Edição, LTC, 1999.
WEBER, R. F. Fundamentos da Arquitetura de Computadores. 2ª Edição, UFRGS - Sagra-Luzzato, 2001.