• Matéria: Informática
  • Autor: larissapintotooz3xmn
  • Perguntado 8 anos atrás

Em sistemas Unix é possível descobrir em um determinado instante quantos segundos se passaram desde 01 de janeiro de 1970 até o instante em questão. Usando este tipo de informação é possível, por exemplo, calcular através de uma simples subtração quantos segundos se passaram entre dois instantes de tempo diferentes. Nestes sistemas Unix costumava-se usar uma variável inteira de 32 bits com sinal para contar os segundos desde 01 de janeiro de 1970. Isto pode causar um enorme problema porque após um determinado tempo a quantidade de segundos que se passaram ultrapassa o maior número inteiro com sinal que se pode armazenar em 32 bits e aí problemas parecidos com o bug do ano 2000 aparecem.
Para simplificar o problema considere que um ano tem sempre 365 dias de 24 horas. Calcule em que ano o número de segundos irá ultrapassar o limite imposto pelo uso de 32 bits com sinal.

Respostas

respondido por: bokomoko
7
quando se armazena um número com sinal em notação binária significa que um dos bits será utilizado como sinal
0 = positivo
1 = negativo

Ora, se o número tem 32 bits e um bit vai ficar para o sinal então restam 31 bits para o valor do número
Isso faz com que o maior número positivo seja 2³¹-1 =  2.147.483.647

Considerando que um ano tem 365 * 24 * 60 * 60 segundos = 
31.536.000

2.147.483.647 / 31.536.000 = 
68 anos 
35 dias
3 horas
14 minutos
7 segundos
ou 24855,13 dias
O que dá 19 de janeiro de 2038 as 3horas14minutos e 7 segundos

(tudo calculado no Excel) :)





Perguntas similares