HAKMEM169DEMO.pl


   1 #! perl -lw
   2 use strict;
   3 my $uCount;
   4 my $n =    # 1024+7;
   5            #  01001234567;
   6   0xFFFFFFFF;
   7 
   8 sub p { printf "%s\n", shift }
   9 
  10 sub c {
  11     my ( $a, $x ) = @_;
  12     return $x unless $a;
  13     printf "(%s) %08x = %012o = %10u = %32b\n", $a, $x, $x, $x, $x;
  14     return $x;
  15 }
  16 
  17 c( n => $uCount = $n );
  18 c( c => $uCount -= c( b => ( c( h => $n >> 1 ) & c( x => 033333333333 ) ) ) );
  19 c( e => $uCount -= c( d => ( c( q => $n >> 2 ) & c( x => 011111111111 ) ) ) );
  20 p( q/-/ x 80 );    #---------------------------------------
  21 c( g => $uCount += c( f => ( $uCount >> 3 ) ) );
  22 c( i => $uCount &= c( h => 030707070707 ) );
  23 p( q/-/ x 80 );    #---------------------------------------
  24 c( l => $uCount % c( k => 63 ) );
  25