【问题标题】:Ambiguous Hex/octal value in bitwise operation in C [closed]C中按位运算中不明确的十六进制/八进制值[关闭]
【发布时间】:2013-06-23 04:35:26
【问题描述】:

我觉得我缺少一些关于数字系统的基本知识,但我真的对下面我尝试使用位运算符的代码感到困惑:

x=56;
printf("\nHere  :\n%x   %x\n",x,077);
x=x& ~077;
printf("%x\n",x);

它将 077 视为八进制(十六进制 3f)。 如果我只输入 77,它会将其视为十进制(十六进制 4d)。如果放 177 ,则将其视为十进制(十六进制 b1)。我指的是 Richie 和 Kernighan 的《C 编程》一书。

请帮忙。

【问题讨论】:

  • 请问有什么问题?

标签: c hex bitwise-operators octal


【解决方案1】:

完全符合预期。以 0 开头,它是八进制的。以 0x 开头,它是十六进制的。否则为十进制。

有什么问题?

【讨论】:

  • 请注意,在字符常量中,'\177' 是八进制,即使没有前导零。它与问题中讨论的内容不同,但可能有点令人困惑。 (您也可以将 '\x4D' 用于十六进制字符常量。更令人困惑的是,您可以让 '\x4Dace' 全部是具有实现定义值的单个十六进制(多)字符常量。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-30
  • 2021-01-29
  • 2019-04-29
  • 2012-05-24
  • 2016-06-12
  • 2011-06-20
相关资源
最近更新 更多