◆ ビット演算なので >> と同じで 32 ビットになってしまう
◆ 大きな数値の int キャストでは使わない 

php の >> 記事を書いていた気づいたのですが JavaScript ではビット演算は 32 ビットで行われます
~~ の int キャストもビット演算なわけですから数が大きくなると parseInt や + のキャストと値が変わってきます
> parseInt(123456789012345)
< 123456789012345

> parseFloat(123456789012345)
< 123456789012345

> +123456789012345
< 123456789012345

> ~~123456789012345
< -2045911175

> 123456789012345>>0
< -2045911175

> 123456789012345<<0
< -2045911175

> parseInt("123456789012345")
< 123456789012345

> parseFloat("123456789012345")
< 123456789012345

> +"123456789012345"
< 123456789012345

> "123456789012345">>0
< -2045911175

> "123456789012345"<<0
< -2045911175

> ~~"123456789012345"
< -2045911175
こういう結果になりました
文字列に対してでも同じです

32 ビット以上の大きな数値を扱う場合は NaN なしで int キャストしたくても ~~ は使わないようにしましょう