相关疑难解决方法(0)

为什么C不具有二进制文字?

我经常希望我能在c中做这样的事情:

val1 &= 0b00001111; //clear high nibble
val2 |= 0b01000000; //set bit 7
val3 &= ~0b00010000; //clear bit 5
Run Code Online (Sandbox Code Playgroud)

拥有这种语法似乎是C的一个非常有用的补充,没有我能想到的缺点,对于低级语言而言,这似乎是很自然的事情.

编辑:我看到了一些其他很好的选择,但是当有更复杂的面具时它们都会崩溃.例如,如果reg是一个控制微控制器上I/O引脚的寄存器,我想在我写入的reg = 0x46;同时将引脚2,3和7设置为高电平,但我不得不花10秒时间考虑它(而且我每次我在没有看一两天后阅读这些代码时,我可能不得不再花10秒钟,或者我可以写reg = (1 << 1) | (1 << 2) | (1 << 6);但我个人认为这不仅仅是写"reg = 0b01000110;".我同意它不会超出8位或16位架构.不是说我曾经需要制作32位掩码.

c syntax binary literals

30
推荐指数
4
解决办法
3万
查看次数

标签 统计

binary ×1

c ×1

literals ×1

syntax ×1