$#ary = 31; # create an array of 32 empty slots $c = 0; vec($_,0,32) = ~((1<<++$c)-1) for @ary; @ary = reverse @ary; # another way without $c vec($ary[31+$_],0,32) = ~((1<<(-$_+1))-1) for -31..0; print unpack("B*",$_),"\n" for @ary;