【问题标题】:Enter binary instead of hex [duplicate]输入二进制而不是十六进制[重复]
【发布时间】:2012-03-28 17:38:26
【问题描述】:

可能重复:
Can I use a binary literal in C or C++?

我可以用 C 写

uint32_t a = 0x40022000;

使用十六进制。我可以通过输入二进制数字来做类似的事情吗?

【问题讨论】:

  • 0b100110... 有用吗?
  • 你为什么要这样做?如果它是您要实现的标志,请使用 #define FLAG_ON(a, flag_num) ((a) |= (1 << flag_num)) #define FLAG_OFF(a, flag_num) ((a) &= ~(1 << flag_num))FLAG_ON(a, 3) 之类的标志,将为您提供 = binary 00001000

标签: c


【解决方案1】:

使用标准 C 无法做到这一点,但某些编译器(例如 gcc)支持扩展,允许您编写类似的东西

uint32_t a = 0b11010101110101;

【讨论】:

  • 但是不要使用非标准的扩展。它们使您的代码不可移植。尤其应避免 gcc 扩展。除非你正在编写与 Linux 操作系统密切相关的东西,否则除了 gcc 之外没有其他编译器会被使用。
  • @Lundin:说句公道话,clang 也支持。
  • @lundin:虽然我基本同意,但避免尤其是 MSVC 扩展比gcc 扩展更重要。至少gcc支持很多平台。
【解决方案2】:

这是不可能的。在 (ANSI) C 中,您可以输入十进制、十六进制或八进制数字。使用转换器将二进制数转换为十六进制数。一个具有科学能力的标准计算器就足够了。

【讨论】:

  • 编程一个巨大的计算器时为什么要使用计算器?只需编写一个将二进制数字字符串转换为数字类型的函数即可。
猜你喜欢
  • 1970-01-01
  • 2019-01-27
  • 2014-10-30
  • 2013-03-31
  • 1970-01-01
  • 2015-02-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多