use strict; use warnings; my @list; while () { chomp; push (@list, $_); } comp (); sub comp { printf "%-12s%-12s%-12s%-12s\n", (' +v', ' -v') x 2; foreach my $element (map int, @list) { my $negative = ~$element; printf "%11d %11d %#11.8b %#11.8b\n", $element, $negative, 0xFF & $element, 0xFF & $negative; } } __DATA__ 1 2 10 -1 -2 -10 123456 -123456 255 256