Dlaczego C nie ma literałów binarnych?

Często pragnę, abym mógł zrobić coś takiego w c:

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

Posiadanie tej składni wydaje się niewiarygodnie użytecznym dodatkiem do C bez wad, które mogę sobie wyobrazić, i wydaje się naturalną rzeczą dla języka niskiego poziomu, w którym bit-twiddling jest dość powszechny.

Edytuj: Widzę inne świetne alternatywy, ale wszystkie rozpadają się, gdy jest bardziej złożona maska. Na przykład, jeślireg jest rejestrem, który steruje pinami we / wy na mikrokontrolerze i chcę ustawić szpilki 2, 3 i 7 w tym samym czasie, w którym mogę pisaćreg = 0x46; ale musiałem poświęcić 10 sekund na zastanowienie się nad tym (i prawdopodobnie będę musiał poświęcić 10 sekund ponownie za każdym razem, gdy przeczytam ten kod po nie oglądaniu go przez dzień lub dwa) lub będę mógł napisaćreg = (1 << 1) | (1 << 2) | (1 << 6); ale osobiście uważam, że jest to mniej oczywiste niż pisanie `reg = 0b01000110; ' Zgadzam się, że nie skaluje się to jednak daleko poza 8-bitowe lub może 16-bitowe architektury. Nie, żebym kiedykolwiek musiał zrobić 32-bitową maskę.

questionAnswers(7)

yourAnswerToTheQuestion