gpt4 book ai didi

c - 为什么 C 没有二进制文字?

转载 作者:太空狗 更新时间:2023-10-29 16:22:58 26 4
gpt4 key购买 nike

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

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

拥有这种语法似乎是对 C 语言的一个非常有用的补充,没有任何我能想到的缺点,而且对于位旋转相当普遍的低级语言来说,这似乎是很自然的事情。

编辑:我看到了其他一些很棒的替代方案,但是当有更复杂的面具时,它们都会分崩离析。例如,如果 reg是控制微 Controller 上 I/O 引脚的寄存器,我想同时将引脚 2、3 和 7 设置为高电平我可以写 reg = 0x46;但是我不得不花 10 秒来考虑它(在一两天不看这些代码后,我每次阅读这些代码时可能不得不再次花 10 秒)或者我可以写 reg = (1 << 1) | (1 << 2) | (1 << 6);但我个人认为这比写 `reg = 0b01000110;' 更不清晰。我同意它不能很好地扩展到 8 位或 16 位架构之外。并不是说我曾经需要制作 32 位掩码。

最佳答案

根据 Rationale for International Standard - Programming Languages C §6.4.4.1 整数常量

A proposal to add binary constants was rejected due to lack of precedent and insufficient utility.

它不在标准 C 中,但 GCC 支持它作为扩展,以 0b0B 为前缀:

 i = 0b101010;

参见 here了解详情。

关于c - 为什么 C 没有二进制文字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18244726/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com