One lunch I was complaining about how
or and
die get all of the good work and some of my
bit-twiddling coworkers said that they hardly ever have
anything to do. We went out for drinks later and they
tried to teach me what they know about integers. I find
it very hard to understand but I think I figured out how
to do 2+2.
sub add {
my( $a, $b, $bit, $cary, $sum ) = ( @{$_[0]}, 1, 0, 0 );
$sum |= $bit if 1 & ( $a ^ $b ^ $cary );
$cary = 1 & ( $a & $b | ( $cary & ($a|$b) ) );
return $a | $b ? [$a>>1,$b>>1,$bit<<1,$cary,$sum] : $sum;
}
my @args = map {0+$_} (@ARGV,2,2)[0,1];
my $acc = add( [@args] );
$acc = add($acc) while ref $acc;
print "add[@args] = $acc\n";
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.