今日ある友人に野暮用で会った。
彼がなぜだかPerlで2進数を扱うのに悩んでいたので回答。
彼が悩んでいたのは、2進数を10進数に変換する方法。
まっとうに考えると、こんな感じになるだろう。
sub bin2dec($){
my $bin = shift;
my $dec = 0;
for my $i (split // => $bin){
$dec = $dec*2+$i;
}
return $dec;
}
しかしこういう方法もある。
sub bin2dec($){
my $bin = shift;
my $dec = 0;
$bin =~ s/([01])/$dec=$dec*2+$1/geo;
return $dec;
}
極めつけは、この方法。
sub bin2dec($){
$_[0] =~ /([01]+)/o;
return eval "0b$1";
}
その逆の方は、ものすごい簡単。
sub dec2bin($){ sprintf "0b%b" => @_ }
この手のことは、表題の本に詳しいので是非。日本語版の監訳者には私も名を連ねてます。
Dan the JAPH

ふと思ったのですが、
ライブドアのトップページがyahooに酷似している件で、
これって子飼さんも開発に関わっていたのですか?
僕としては上場企業があそこまでパクるのはどうかと思います・・・