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