在 Programming in the Key of C# 中,作者给出了一个示例(带有源代码),说明如何将日期(年、月、日 - 以数字表示)打包为 32 位整数。在示例中,作者将信息打包如下:
int iDate = (iYear << 9) | (iMonth << 5) | iDay;
如果我掌握得当,左移 9 只给我们一个 512 的值(如果计算每个位位置,则为 1023)。但是,我注意到在运行程序时可以存储 2014(年)之类的值。这么小的值怎么可能?我误解了这段代码吗?再多的阅读、观看或玩弄代码都无法帮助我理清思路。