home     blog     about     contact
published: 2020-05-24
started: 2020-05-24
last change: 2020-05-24

Bitmask Tricks



// int
// starting to count from highest bit, n = 5
int a =   -1 >>> n ; // 00000111111111111111111111111111₂ (all but highest n bits set)
int b = ~(-1 >>> n); // 11111000000000000000000000000000₂ (highest n bits set)

// starting to count from lowest bit, n = 5
int c =   -1  << n ; // 11111111111111111111111111100000₂ (all bits higher than n set)
int d = ~(-1  << n); // 00000000000000000000000000011111₂ (lowest n bits set)

// long
// starting to count from highest bit, n = 5
long e =   -1L >>> n ; // 0000011111111111111111111111111111111111111111111111111111111111₂ (all but highest n bits set)
long f = ~(-1L >>> n); // 1111100000000000000000000000000000000000000000000000000000000000₂ (highest n bits set)

// starting to count from lowest bit, n = 5
long g =   -1L  << n ; // 1111111111111111111111111111111111111111111111111111111111100000₂ (all bits higher than n set)
long h = ~(-1L  << n); // 0000000000000000000000000000000000000000000000000000000000011111₂ (lowest n bits set)

Snippet 1: BitmaskTricks in Java

You can find ready to run code in BitmaskTricks.java.