log(2)/log(10) ≒ 0.301

google:log(2) / log(10) ≒ 0.3 (もっというなら0.301)というのを覚えておくと2^Nが10進数で何桁まで溢れずに計算できるか計算するのに便利。

2^8
8 * 0.3 ≒ 2 (2^8 = 256)
2^10
10 * 0.3 = 3 (2^10 = 1024)
2^32
32 * 0.3 ≒ 9 (2^32 = 4.x * 10^9)
2^64
64 * 0.3 ≒ 19 (2^64 = 1.8 * 10^19)
2^128
128 * 0.3 ≒ 38 (2^128 = 3.4 * 10^38)

要するにC#だとuintで9桁まで桁溢れ無しの計算ができて、ulongだと19桁まで桁溢れ無しの計算ができるということです。
まあ、MAX限界でギリギリ金融計算する場合はこれじゃあ危険ですが。(和算などでオーバーフローすることも考えなくてはいけない。)
Javaなら素直にBigIntegerなどを使うべきです。
概算といえば、2^10 ≒ 1000 もよく使いますね。