十六进制 1002 是什么?
在 C 语言中,十六进制数 1002 是一个整型常量,要把它转换成我们熟悉的十进制,需要按照“按权展开”的方法计算。

(图片来源网络,侵删)
转换公式:
1 * 16³ + 0 * 16² + 0 * 16¹ + 2 * 16⁰
计算过程:
1 * 4096 = 40960 * 256 = 00 * 16 = 02 * 1 = 2
相加结果:
4096 + 0 + 0 + 2 = 4098
在 C 语言中,十六进制数 0x1002 等于十进制数 4098。

(图片来源网络,侵删)
C 语言中如何表示十六进制数?
在 C 语言中,要表示一个十六进制数,必须在数字前加上 0x 或 0X 作为前缀。
- 正确写法:
0x1002 - 错误写法:
1002(C 编译器会认为这是一个十进制数)
为什么十六进制在编程中很重要?
十六进制(Hexadecimal)是编程中非常常用的进制,主要有以下几个原因:
-
与二进制的完美转换: 十六进制的每一位(0-9, A-F)都精确地对应 4 个二进制位(bit)。
0x1=0001(二进制)0x0=0000(二进制)0x2=0010(二进制)0xA=1010(二进制)0xF=1111(二进制)
这使得将一个很长的二进制数(如内存地址)转换为十六进制变得非常简单快捷,反之亦然。
(图片来源网络,侵删) -
表示内存地址: 计算机的内存地址通常是用二进制表示的,一个 32 位系统的内存地址可能是一个 32 位的二进制数:
00000000 00000000 00000100 00000010,这个地址用十进制表示是1026,用十六进制表示就是0x402,显然,0x402比1026更能直观地反映其二进制结构0100 0000 0010,并且书写和阅读都更方便。 -
表示颜色值: 在 Web 开发(如 HTML/CSS)和图形编程中,颜色通常用 RGB(红、绿、蓝)值来表示,每个颜色通道的值范围是 0-255,正好可以用两个十六进制数表示。
#FFFFFF是白色 (红=FF, 绿=FF, 蓝=FF)#000000是黑色 (红=00, 绿=00, 蓝=00)#FF0000是红色 (红=FF, 绿=00, 蓝=00)
-
表示位掩码: 当你需要操作一个整数中的特定位时,使用十六进制常量非常方便。
0xFF(二进制11111111)可以用来截取一个字节的低 8 位。
代码示例
下面是一个完整的 C 语言示例,展示了如何定义、打印和转换十六进制数。
#include <stdio.h>
int main() {
// 定义一个十进制整数
int decimal_num = 4098;
// 定义一个十六进制整数,编译器会自动将其转换为4098
int hex_num = 0x1002;
// 定义一个八进制整数(前缀为0)
int octal_num = 01002;
printf("--- 值的显示 ---\n");
// %d: 以十进制形式打印
printf("十进制 4098 的值是: %d\n", decimal_num);
printf("十六进制 0x1002 的值是: %d\n", hex_num);
printf("八进制 01002 的值是: %d\n", octal_num);
printf("\n--- 不同进制的打印 ---\n");
// %x: 以小写十六进制形式打印(不带0x前缀)
// %X: 以大写十六进制形式打印(不带0X前缀)
// %o: 以八进制形式打印(不带0前缀)
printf("十进制 4098 的十六进制表示是: %x\n", decimal_num);
printf("十进制 4098 的大写十六进制表示是: %X\n", decimal_num);
printf("十进制 4098 的八进制表示是: %o\n", decimal_num);
printf("\n--- 使用 printf 的格式化输出 ---\n");
// %#x: 以小写十六进制形式打印,并带0x前缀
// %#o: 以八进制形式打印,并带0前缀
printf("带前缀的十六进制: %#x\n", decimal_num);
printf("带前缀的大写十六进制: %#X\n", decimal_num);
printf("带前缀的八进制: %#o\n", decimal_num);
return 0;
}
程序输出:
--- 值的显示 ---
十进制 4098 的值是: 4098
十六进制 0x1002 的值是: 4098
八进制 01002 的值是: 514
--- 不同进制的打印 ---
十进制 4098 的十六进制表示是: 1002
十进制 4098 的大写十六进制表示是: 1002
十进制 4098 的八进制表示是: 10002
--- 使用 printf 的格式化输出 ---
带前缀的十六进制: 0x1002
带前缀的大写十六进制: 0X1002
带前缀的八进制: 010002
| 特性 | 描述 |
|---|---|
| 数值 | C 语言中的 0x1002 等于十进制的 4098。 |
| 表示法 | 必须使用 0x 或 0X 作为前缀。 |
| 用途 | 主要用于表示内存地址、颜色值、位掩码等与底层硬件或二进制紧密相关的数据。 |
| 与二进制关系 | 1 位十六进制数 = 4 位二进制数,转换极其方便。 |
