Hello Dave,
Was trying this
bool OnesZerosOnes(unsigned int n)
{
if( !(n & 1) || !(n &= n+1) ) return 0; /*step1*/
n |= n-1;/*step 2*/
return !(n & (n+1)); /*step 3*/
}
for 1110011
after step 1 it becomes 1110011&1110100=1110000
after step2 it becomes 1110000|1101111=1111111(all ones)
on step 3 we return~(1111111&0000000) = 1
for 1010011
after step 1 it becomes 1010011&1010100=1010000
after step2 it becomes 1010000|1001111=1011111
on step 3 we return~(1011111&1100000) = 0
what are we trying to do with step 3 here
Best Regards
Ashish Goel
"Think positive and find fuel in failure"
+919985813081
+919966006652
On Sat, Apr 7, 2012 at 11:24 AM, Dave <[email protected]> wrote:
> bool OnesZerosOnes(unsigned int n)
> {
> if( !(n & 1) || !(n &= n+1) ) return 0;
> n |= n-1;
> return !(n & (n+1));
> }
>
--
You received this message because you are subscribed to the Google Groups
"Algorithm Geeks" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/algogeeks?hl=en.