Extraia n bits diferentes de zero mais significativos do int em C ++ sem loops

Eu quero extrair os n bits mais significativos de um número inteiro em C ++ e converter esses n bits em um número inteir

Por exempl

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

Agora quero extrair os 4 dígitos mais significativos dessa representação, ou seja, 1111

00000000000000000000010010110000
                     ^^^^

e converta-os novamente em um número inteiro (1001 em decimal = 9

Como é possível com uma função c ++ simples sem loops?

questionAnswers(6)

yourAnswerToTheQuestion