C中按位运算中的模糊十六进制/八进制值

时间:2013-06-26 06:47:24

标签: c hex bitwise-operators octal

我觉得我遗漏了一些关于数字系统的基本知识,但我真的很困惑我正在尝试使用按位运算符的下面一段代码:

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

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

请帮忙。

1 个答案:

答案 0 :(得分:6)

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

有什么问题?