Author: Jaime Benito de Valle Ruiz
Date: 13:18:53 08/22/03
Go up one level in this thread
On August 22, 2003 at 16:02:56, Uri Blass wrote:
>I have many cases when I want to do something for all the 1's of a number that
>is
>0-255
>
>I do something like this if I am sure that the number is not 0(I start with
>while if the number can be 0)
>
>do
>{
> j=smallest_power[i];
>/*for example smallest_power[34]=1 because 34=2^1+2^5 and 1 is the smallest
>power in this representation*/
> f(j);
> i&=i-1;
>}
>while (i>0);
>
>I believe that it is not optimal because I calculate information that I do not
>need and it is better to have something like
>
>for (k=0;k<weight[i];k++)
>f(power[i][k]);
>
>I already have the relevant array weight[i] that gives me the number of 1's but
>before generating the array power[i][k] that gives the value of the k power of i
>I prefer to ask here maybe someone has a better idea.
>
>Note that I am even not sure if the second idea is faster because I am afraid
>that calling array of 2 dimensions may be slower.
>
>Uri
I'm not sure I know what do you intend to do here. You are calling a function
"f" (that takes a bit number) for every bit set to 1 that you find in "i",
right?
Quite likely you can optimize this loop by using assembler, but maybe if you
tell us what this function "f" is supposed to be doing, an alternative solution
can be suggested for the whole problem.
Is it really important for "f" to know what bit is it, or just that there is a
bit set to 1?
Regards,
Jaime
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.