sub is_same_leading_bit { my ($v1, $v2) = (shift, shift); my $and = 1 << 63; for my $shift(0 .. 63) { my $c1 = ($v1 << $shift) & $and; my $c2 = ($v2 << $shift) & $and; return 1 if $c1 & $c2; return 0 if $c1 | $c2; } return 0; # both args are 0. }