Extracting rightmost N bits of an integer
        Posted  
        
            by srandpersonia
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by srandpersonia
        
        
        
        Published on 2010-05-09T15:50:36Z
        Indexed on 
            2010/05/09
            15:58 UTC
        
        
        Read the original article
        Hit count: 327
        
In the yester Code Jam Qualification round http://code.google.com/codejam/contest/dashboard?c=433101#s=a&a=0 , there was a problem called Snapper Chain. From the contest analysis I came to know the problem requires bit twiddling stuff like extracting the rightmost N bits of an integer and checking if they all are 1. I saw a contestant's(Eireksten) code which performed the said operation like below:
(((K&(1<<N)-1))==(1<<N)-1)
I couldn't understand how this works. What is the use of -1 there in the comparison?. If somebody can explain this, it would be very much useful for us rookies. Also, Any tips on identifying this sort of problems would be much appreciated. I used a naive algorithm to solve this problem and ended up solving only the smaller data set.(It took heck of a time to compile the larger data set which is required to be submitted within 8 minutes.). Thanks in advance.
© Stack Overflow or respective owner