其它进制的常量

其它进制的常量

我们最常见的是十进制的数,还有二进制我们也接触过。

十进制是以 10 为基底,由 0-9 这十个数组成。

十六进制常量

也可以用十六进制编写整数,即以 16 为基底。

十六进制使用的数字等价于十进制里的 0~15,其中 10-15 使用英文字母 A-F 或者小写 a-f 来代替(0-9 a-f)。

为了和十进制区分,十六进制前面加 0x 或者 0X。

比如 0x99。十六进制同样可以有后缀:

下面是一些实例:

0xFFFF 0xdead 0xfade 0xFade 0x123456EE 0xafL 0xFABABULL

最后一个例子的类型是 unsigned long long,倒数第二个是 long。

十六进制常量常用来表示位模式,因为每一个十六进制的数对应四个二进制位,而两个十六进制的数指定一个字节。

八进制常量

八进制是以 8 为基底。八进制数字为 0-7,对应于二进制的三位。

八进制数起源于计算机内存采用 36 位字的时代,那时候一个字是三位组合。因此 36 位二进制可以写成 12 个八进制数。

八进制现在很少使用,但是需要知道它们,主要是为了避免无意中错误使用。

八进制是以 0 开头的整数常量。例如 014,会被计算机编译器看做八进制。因此 014 等价于十进制里面的 12。

所以不要在整数前随意加 0。

代码示例

#include <stdio.h>                  

int main(void) 
{ 
    printf("%d\n",0x99);
    printf("%d\n",014);
	return 0;                        
}Code language: PHP (php)

输出结果

153
12

代码说明

  • 0x99 是十六进制常量,转换为十进制:9×16 + 9 = 153。
  • 014 是八进制常量,转换为十进制:1×8 + 4 = 12。
  • 使用 %d 格式符以十进制形式输出。

核心要点

进制类型前缀数字范围示例十进制值
十六进制0x 或 0X0-9, a-f, A-F0x99153
八进制0(零)0-701412

注意:八进制以 0 开头,因此日常写十进制整数时千万不要在前面加 0,否则编译器会将其解析为八进制而导致逻辑错误。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注