Extraiga n bits distintos de cero más significativos de int en C ++ sin bucles

Quiero extraer los n bits más significativos de un entero en C ++ y convertir esos n bits en un entero.

Por ejempl

int a=1200;
// its binary representation within 32 bit word-size is
// 00000000000000000000010010110000

Ahora quiero extraer los 4 dígitos más significativos de esa representación, es decir, 1111

00000000000000000000010010110000
                     ^^^^

y conviértalos nuevamente a un número entero (1001 en decimal = 9).

Cómo es posible con una simple función de C ++ sin bucles?

Respuestas a la pregunta(6)

Su respuesta a la pregunta