Шрифт:
Для примера рассмотрим, как извлечь (низкоуровневую) информацию из целого числа (возможно, из-за того, что мы хотим передать его как набор байтов через двоичный механизм ввода-вывода).
Такие операции не редкость. Они известны как “сдвиг и наложение маски” (“shift and mask”). Мы выполняем сдвиг (“shift”), используя операторы
При необходимости именовать биты часто используются перечисления. Рассмотрим пример.
Этот код определяет перечисление, в котором каждый элемент равен именно тому значению, которому соответствует его имя.
Такие значения полезны, потому что они комбинируются совершенно независимо друг от друга.
Отметим, что оператор
Оператор
Теперь переменная
Очень часть переменные типа
Приведение необходимо потому, что компилятор не может знать, что результат выражения
25.5.5. Битовые поля
З2-битовое слово состоит из двух числовых полей (одно длиной 22 бита и другое — 3 бита) и четырех флагов (длиной один бит каждый). Размеры и позиции этих фрагментов фиксированы. Внутри слова существует даже неиспользуемое (и неименованное) поле. Эту схему можно описать с помощью следующей структуры: