Я пытаюсь преобразовать десятичное число в набор битов длины 27
, а затем извлечь MSB (самый левый бит) из этого набора битов, используя побитовые операторы. Например, число 67108865
выражается как 100000000000000000000000001
, а MSB - 1
. Другим примером является число 1
, которое выражается как 000000000000000000000000001
, а MSB - 0
.
Ниже приведен мой код C ++:
unsigned int value = 67108865;
bitset<27> bs(value);
int most_significant_bit = bs >> (sizeof(value)*8 - 1) & 1;
cout << most_significant_bit << endl;
Однако я получаю следующее ошибка:
ошибка: нет совпадения для оператора & (типы операндов: 'std :: bitset <27>' и 'int') int most_significant_bit = bs >> (sizeof (значение) * 8 - 1) & 1;
Как бы я получил MSB, используя побитовые операторы?