Почему C не имеет двоичных литералов?

Я часто хотел бы сделать что-то подобное в c:

val1 &= 0b00001111; //clear high nibble
val2 |= 0b01000000; //set bit 7
val3 &= ~0b00010000; //clear bit 5

Наличие этого синтаксиса кажется невероятно полезным дополнением к Си, без каких-либо недостатков, о которых я могу подумать, и это кажется естественным для языка низкого уровня, где бит-тиддлинг довольно распространен.

Редактировать: яЯ вижу некоторые другие отличные альтернативы, но все они разваливаются, когда появляется более сложная маска. Например, еслиreg это регистр, который управляет выводами ввода / вывода на микроконтроллере, и я хочу установить выводы 2, 3 и 7 одновременно с возможностью записиreg = 0x46; но мне пришлось потратить 10 секунд, думая об этом (и явероятно, мне придется тратить 10 секунд снова каждый раз, когда я читаю этот код после того, как я не смотрю на него в течение дня или двух), или я мог бы написатьreg = (1 < 1) | (1 < 2) | (1 < 6);

Ответы на вопрос(7)

Ваш ответ на вопрос