sub by_string { my $n = shift; return length(sprintf "%b", $n) - 1; }