Need a book? Engineering books recommendations...

Return to index: [Subject] [Thread] [Date] [Author]

Year 2000 computer problem

[Subject Prev][Subject Next][Thread Prev][Thread Next]
R. D. McConnell wrote:

. > It is only necessary to change the 2-digit integer representation of the 
. > date to a 4-digit integer to account for the "2000" problem.

I agree with your basic premise that the Y2K problem is a contrived problem, 
however for a different reason.  I, too, was introduced to computers in the 
1950's when the IBM 650 was the greatest and latest.

First, numbers are not stored in computers as "digits," but as electrical 
(magnetic) charges.  Either it is on or it is off.  The largest integer that 
can be represented is determined by the number of bits available.  As I 
recall, the IBM 650 used 12 bit "words" and allowing 1 bit for the sign, the 
maximum integer that can be represented with 11 bits would be 2047.  
Similarly, for 4 bits, the maximum integer would be 15; for 7 bits (8 bits 
minus 1 for a sign), the maximum integer would be 127; and for 16 bits, the 
maximum integer is the recognizable 65,535.

Since the earliest computers (even with the IBM 1401 and IBM 7072, which by 
then were using 24 bit "words") did not store dates (the computers had to be 
initialized with a card deck and the dates entered manually each time the 
computer was started), and that complete "words" had to be used, a "date" 
problem would not occur until at least 2047.  (Hm-m-m, Mac users, does this 
number sound familiar?)

Now, when the BIOS for the PC came into being and stored a date, be it a 
2-digit date (80 as 1010000 or 84 as 1010100) [7 bits], or a 4-digit date 
(1980 as 11110111100 or 1984 as 11111000000) [11 bits], there should not be a 
problem until the year 2007 (for 7 bit numbers) or year 2047 for 11 bit 
numbers.  For 16 bits, the problem would not occur until 65535.  (I have a 
Phoenix BIOS on my old, ca. 1986, Leading Edge Model D [8088 machine] and it 
shows the date as 4-digits.  I have checked the BIOS out for the year 2000 by 
setting the date to December 31, 1999, the time to 11:55 p.m., and waiting 
for more than 5 minutes, both with the computer on and off, and it recorded 
the correct 2000 date.  Now I have to check it out to see if there is a 
February 29th in the year 2000.)

Now, when it comes to *programs* using dates, there could be a problem, but 
not necessarily at the year 2000.  Some programs start with an arbitrary date 
and do date and time arithmetic using the number of days, minutes and seconds 
from that arbitrary date; others use Julian Dates, which means different 
things to different people.  (Some Julian calendars count days from year 1, 
others from the first day of the current year.)

A. Roger Turk, P.E.(Structural)
Tucson, Arizona