i changed the last step to return (n == ~0);
Best Regards
Ashish Goel
"Think positive and find fuel in failure"
+919985813081
+919966006652


On Fri, May 18, 2012 at 11:27 AM, Vishal Thanki <vishaltha...@gmail.com>wrote:

> On Sat, Apr 7, 2012 at 11:24 AM, Dave <dave_and_da...@juno.com> wrote:
> > @Ashgoel: Try this:
> >
> > bool OnesZerosOnes(unsigned int n)
> > {
> >     if( !(n & 1) || !(n &= n+1) ) return 0;
> >     n |= n-1;
> >     return !(n & (n+1));
> > }
> >
> > Here is how it works:
> >
> > !(n & 1) is true if the number has trailing zeros.
> >
> > If the number has trailing ones, n &= n+1 replaces the trailing ones with
> > zeros.
> >
> > !(n &= n+1) is true if there are only trailing ones, i.e., the original
> > number was zeros followed by ones.
> >
> > n |= n-1 replaces trailing zeros with ones. Thus, if the original number
> is
> > ones followed by zeros followed by ones, the zeros have been changed to
> > ones.
> >
> > (n & (n+1)) replaces the trailing ones with zeros. If the number is now
> > zero, the number is valid, otherwise the number is invalid.
> >
> > Dave
> >
> >
>
> Superb, Dave!!
>
> > On Tuesday, April 3, 2012 7:00:36 PM UTC-5, ashgoel wrote:
> >>
> >> verify that the bits of a number are in format 1s followed by 0s
> followed
> >> by 1s like 1110001 is valid but 100100100 is not
> >>
> >> Best Regards
> >> Ashish Goel
> >> "Think positive and find fuel in failure"
> >> +919985813081
> >> +919966006652
> >
> > --
> > You received this message because you are subscribed to the Google Groups
> > "Algorithm Geeks" group.
> > To view this discussion on the web visit
> > https://groups.google.com/d/msg/algogeeks/-/zBATGHVXUTAJ.
> >
> > To post to this group, send email to algogeeks@googlegroups.com.
> > To unsubscribe from this group, send email to
> > algogeeks+unsubscr...@googlegroups.com.
> > For more options, visit this group at
> > http://groups.google.com/group/algogeeks?hl=en.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Algorithm Geeks" group.
> To post to this group, send email to algogeeks@googlegroups.com.
> To unsubscribe from this group, send email to
> algogeeks+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/algogeeks?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algogeeks@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to