How is Time encoded in NTP?
There was a nice answer from Don Payette in news://comp.protocols.time.ntp, slightly adapted: The NTP timestamp is a 64 bit binary value with an implied fraction point between the two 32 bit halves. If you take all the bits as a 64 bit unsigned integer, stick it in a floating point variable with at least 64 bits of mantissa (usually double) and do a floating point divide by 2^32, you’ll get the right answer. As an example the 64 bit binary value: 00000000000000000000000000000001 10000000000000000000000000000000 equals a decimal 1.5. The multipliers to the right of the point are 1/2, 1/4, 1/8, 1/16, etc. To get the 200 picoseconds, take a one and divide it by 2^32 (4294967296), you get 0.00000000023283064365386962890625 or about 233E-12 seconds. A picosecond is 1E-12 seconds. In addition one should know that the epoch for NTP starts in year 1900 while the epoch in UNIX starts in 1970.