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: 219

Filed under:
|
|

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

Related posts about bit-twiddling

Related posts about java