Programming in the Key of C# で、著者は、日付 (年、月、日 -- 数値) を 32 ビット整数にパックする方法の例 (ソース コード付き) を示しています。この例では、作成者は次のように情報をパックします。
int iDate = (iYear << 9) | (iMonth << 5) | iDay;
これを正しく理解していれば、9 の左シフトはちょうど 512 (またはすべてのビット位置をカウントする場合は 1023) の値を与えます。しかし、プログラムを実行すると、2014 (年) のような値が保存されることに気付きました。このような小さな値でこれがどのように可能になるのでしょうか? このコードの一部を誤解していますか? コードを読んだり、見たり、いじったりしても、空気をきれいにするのに役立ちませんでした。