Как уже было сказано, стандарты C не имеют возможности напрямую писать двоичные числа. Однако есть расширения компилятора, и, судя по всему, C ++ 14 содержит префикс 0b
для двоичного кода. (Обратите внимание, что этот ответ был первоначально опубликован в 2010 году.)
Одним из распространенных способов решения является включение файла заголовка со вспомогательными макросами . Одним из простых вариантов является создание файла, который включает определения макросов для всех 8-битных шаблонов, например:
#define B00000000 0
#define B00000001 1
#define B00000010 2
…
. Это приводит только к 256 #define
s, а если больше 8-битного двоичного кода необходимы константы, эти определения могут быть объединены со сдвигами и OR, возможно с вспомогательными макросами (например, BIN16(B00000001,B00001010)
). (Имея индивидуальные макросы для каждого 16-битного, не говоря уже о 32-битном, значение не правдоподобно.)
Конечно, недостатком является то, что этот синтаксис требует записи всех ведущих нулей, но это также может сделать это более понятный для использования, как установка битовых флагов и содержимого аппаратных регистров. Для функционально-подобного макроса, приводящего к синтаксису без этого свойства, см. bithacks.h
, приведенную выше.