Or Math::BigNum if one has a large number of calculations and needs a bit more speed.
use 5.016; use Test::More qw(no_plan); use Math::BigNum; for (51..66) { # no need to substr to remove 0b prefix my $s = Math::BigNum->new(2)->bpow($_)->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
In reply to Re^2: Converting 2**54-1 to Binary
by swl
in thread Converting 2**54-1 to Binary
by philiprbrenan
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |