note
duelafn
<p>And, to make it work as you were expecting, use [mod://Math::BigInt]</p>
<code>
use 5.016;
use Test::More qw(no_plan);
use Math::BigInt;
for (51..66) {
# substr to remove 0b prefix
my $s = substr(Math::BigInt->new("2")->bpow($_)->bdec->as_bin, 2);
# Or: Math::BigInt->new("1")->blsft($_)->bdec->as_bin
is length($s), $_, "1 << $_ -1";
}
__END__
ok 1 - 1 << 51 -1
ok 2 - 1 << 52 -1
ok 3 - 1 << 53 -1
ok 4 - 1 << 54 -1
ok 5 - 1 << 55 -1
ok 6 - 1 << 56 -1
ok 7 - 1 << 57 -1
ok 8 - 1 << 58 -1
ok 9 - 1 << 59 -1
ok 10 - 1 << 60 -1
ok 11 - 1 << 61 -1
ok 12 - 1 << 62 -1
ok 13 - 1 << 63 -1
ok 14 - 1 << 64 -1
ok 15 - 1 << 65 -1
ok 16 - 1 << 66 -1
1..16
</code>
<div class="pmsig"><div class="pmsig-53268">
<p>Good Day,<br> Dean</p>
</div></div>
1185078
1185078