2016 Bug Hits Text Messages, Payment Processing
An anonymous reader writes "It seems some systems are suffering from a Y2K16 bug. When 2009 ticked over to 2010, some Australian EFTPOS machines skipped to the year 2016. Coincidentally, some Windows Mobile users are also having issues with their new year SMSes coming from 2016. What function could cause this kind of error?"
Seems Microsoft is supplying some code for EFTPOS machines that is common with Windows Mobile, so it's most likely the same bug in both.
Could be botched string parsing. Could be binary coded decimals interpreted as binary numbers: BCD encodes two decimal digits in the high and low nibbles of a byte. Therefore BCD 10 is 0001 0000 in binary, which is 16 in decimal.
I don't think you quite have the hang of binary (10 would be 2, not 3).
No, I meant exactly what I said. I didn't say 0b01. 0x10 is the hexadecimal notation for "00010000" binary, which is 16 decimal.
/.. 0b00010000 is non-standard (but allowed by some compilers).
I used 0x10 because that's standard ANSI C (and ECMA-334 C#), and C is what seems to be spoken on
"National Security is the chief cause of national insecurity." - Celine's First Law
Let me see if I can straighten it out, then.
0x10 is a hexadecimal number, 0001 0000 binary, 16 decimal.
0x10 is a BCD number, 0001 0000 binary, 10 decimal.
(BCD is an encoding system, not a base system. In hex or binary it’s given in encoded form, but in decimal it’s given in decoded form.)
Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
> (a leftover relic from the mainframe era that needed to die over a decade ago)
No no no. Binary coded decimal is necessary and useful. When you divide 1 by 10, you should get 0.1, not 0.10000000000000001 (which is what you get if you for instance open up a python interpreter and ask for 1.0 / 10.0).
Monetary amounts, and currency conversion rates are examples of something you should never, ever use standard binary floats for.
Fact: Many major databases use some form of BCD for representing currency values. Enough so that IBM added a dedicated decimal FPU for their power6 series - it's so common on business database servers that it actually saves a lot.
xkcd is not in the sudoers file. This incident will be reported.