What is with the 00x ? Perl will be finding the x operator and giving you a string of '0' x BIG_NUM. Does this help?
my $num = 0xffff;
my $mask = 0xd0d0;
printf "
%b (0x%x) %d
&
%b (0x%x) %d
", $num,$num,$num,$mask,$mask,$mask;
print '-' x 31;
$num &= $mask;
printf "
%b (0x%x) %d", $num, $num, $num;
__DATA__
1111111111111111 (0xffff) 65535
&
1101000011010000 (0xd0d0) 53456
-------------------------------
1101000011010000 (0xd0d0) 53456
|