in reply to Re: Power of two round up.
in thread Power of two round up.

On the other hand,

If you want to use horrible and/or (somewhat) obfuscated code, you could try:

sub shifty { my $v = (shift)-1; map { return ++$v } map { $v |= $v >> $_ } (1,2,4,8,16); }
or alternately (the readable version):
sub shifty2 { my $v = (shift)-1; $v |= $v >> $_ foreach (1,2,4,8,16); return ++$v; }
i don't know why i was compelled to post that, but i knew one could reduce the repition and possibly obfuscate the code a little with some obviously useless uses of map doing things it wasn't meant to do...
my $0.02;

jynx

Replies are listed 'Best First'.
Re: Re: Re: Power of two round up.
by I0 (Priest) on Dec 20, 2000 at 09:03 UTC
    #or perhaps $w=32; $v |= $v>>($w>>=1) while $w;