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