#!/usr/bin/perl use warnings; use strict; sub a_half_nibble_is_00 { my $str = shift; # XXX bounds my @masks = map {chr $_} ( 3, 12, 48, 192 ); # XXX magic local $_; return !! grep { (~($str.'')&$_) eq $_ } @masks; # L::U::first } my @chars = map { chr $_ } (0 .. 127 ); for my $str ( @chars) { my $flag = a_half_nibble_is_00( $str) ? '*' : '' ; printf "%2s%4d >%08b< >%s<$/", $flag, ord($str), ord($str), $str; }