>>926-927
ありがとうございます。
>>927で実装してみたところ、上手くいってる……と思ったら、
いくつかある変数のうち1つだけが値がおかしいのでよく調べたら、
wikipediaによればC++ではシフト元を超えてシフトする場合の動作は未定義とのことで。
iの値は、元が64ビットの保証がない時はsizeof使うってことでいいんでしょうか?