for my $a (-2..10, 0.2, -0.2, 1 + 0.25e-15) { $_ = unpack("b*", pack("d", $a)); # double to bit-pattern s/(.{8})/$1 /g; tr[0][.]; # grouping&fmt. $_ = reverse $_; # formatting s/^(..)(.{12})(.*)/Sgn:$1 Exp: $2 Mant:(1,)$3/; print "$a\t -- $_\n"; }