コラッツ予想2(4)演算を完全簡略化
2で割ることは考えずにおく。
2進数で
n=10001000011
のような数字があるとする。
2の補数で表現すると
01110111101.00000000000....
1の補数で表現すると
N=01110111100.11111111111....
補数では
M=(3N-1)/(2^r)
なので
これを3倍すれば
同じ結果が得られる
00.11111111111....
末尾だけ見ると
10.11111111111....
となり、+2されてー1するので
+1して小数点を一桁移動することと同じである。
なので
01.11111111111....
として
0.111111111111....
と変換ができる。
補数へ計算の場合は
N=.....1.1111111....
になった場合でも
同様に3倍して小数点を1桁移動するロジックには代わりは無い。
このように演算を続けると、
補数演算では下位からの繰上げが無いので
各1のビットは桁位置xに応じて常に
3^x
されることになる。
よって、事前に元の数字を桁に応じた指数で
3の(桁位置)乗しておけば、それが最大値であり
以降、一桁ずつ削除していけば
最終的には
....11111110.1111111111....
つまり
1
へ収束する。