C语言学习笔记 - 24.C编程预知识 - 常量以什么样的二进制代码存储在计算机中

📅 2026/7/8 0:16:40 👁️ 阅读次数 📝 编程学习
C语言学习笔记 - 24.C编程预知识 - 常量以什么样的二进制代码存储在计算机中

一、核心前提认知

计算机硬件仅能识别和存储二进制数据(0和1),任何类型的常量在存入内存前,都必须按照指定的编码规则转换为二进制代码。

常量的二进制存储本质是编码规则问题,不同数据类型的常量遵循完全不同的编码标准,这是C语言数据类型体系的底层核心逻辑。


二、不同类型常量的二进制存储规则

2.1 整型常量:补码编码规则

核心存储规则

所有整型常量(int/short/long类型),均以补码的形式转换为二进制代码,存储在计算机内存中

  • 补码是C语言整数存储的统一标准,它规范了整数与二进制代码的一一对应关系,同时统一了正负数的存储规则,简化了计算机加减运算的硬件实现逻辑;

  • 补码的详细计算方法、正负数补码的差异,将在课程后期专题章节详细讲解,入门阶段需牢记核心存储结论。

存储流程示例

以代码int i = 86;为例,整型常量的完整存储流程为:

  1. 取十进制整型常量86

  2. 按照补码规则,将86转换为对应的二进制代码;

  3. 将转换后的二进制代码,写入变量i对应的内存空间中。

2.2 浮点型常量(实数/小数):IEEE 754标准

核心存储规则

浮点型常量(float/double类型,即带小数位的实数),遵循IEEE 754国际标准转换为二进制代码存储

补充说明
  1. IEEE 754标准将小数拆分为符号位、指数位、尾数位三部分进行二进制编码,解决了小数的二进制存储与精度控制问题;

  2. 入门阶段仅需了解该存储标准即可,无需深入掌握编码细节;

  3. 该标准的核心应用场景为底层数据通信、跨设备数据解析,日常业务开发极少需要手动拆解编码。

2.3 字符型常量:ASCII码+补码两步存储法

核心存储规则

字符型常量的存储分为两步完成,其本质与整数的存储方式完全一致

完整存储流程(以字符'A'为例)
  1. 查表映射:通过ASCII码(美国信息交换标准代码),将字符映射为一个固定的十进制整数。

    ASCII码是国际通用的字符编码标准,规定了每个可打印字符、控制字符对应的唯一整数,典型映射关系如下:

    字符

    对应十进制整数

    'A'

    65

    'B'

    66

    '?'

    63

    '0'

    48

  2. 补码转换:将映射得到的整数,按照整型常量的存储规则,以补码形式转换为二进制代码,最终写入内存。

核心结论

字符在计算机中本质上是以整数的形式存储的,C语言中所有对字符的操作,底层都是对其映射的整数进行运算。


三、代码示例与运行验证

// 引入标准输入输出头文件,为printf函数提供支持 #include <stdio.h> int main(void) { // 1. 整型常量:以补码形式存储在内存中 int num_int = 86; // 2. 浮点型常量:以IEEE 754标准存储在内存中 float num_float = 8.6; // 3. 字符型常量:先映射ASCII码,再以补码形式存储 char ch = 'A'; // 以十进制格式输出整型常量 printf("整型常量86的十进制值:%d\n", num_int); // 以十六进制格式输出,可间接查看二进制存储特征 printf("整型常量86的十六进制值:%x\n", num_int); // 输出字符常量的字符形式 printf("字符常量'A'的字符形式:%c\n", ch); // 输出字符常量对应的ASCII码整数,验证其整数存储本质 printf("字符常量'A'对应的ASCII码整数:%d\n", ch); return 0; }
代码运行结果
整型常量86的十进制值:86 整型常量86的十六进制值:56 字符常量'A'的字符形式:A 字符常量'A'对应的ASCII码整数:65

四、核心要点总结

  1. 计算机仅能存储二进制数据,所有常量必须先按对应编码规则转换为二进制,才能存入内存;

  2. 整型常量:以补码形式转换为二进制存储,是C语言最基础的存储规则;

  3. 浮点型常量:遵循IEEE 754国际标准进行二进制编码存储;

  4. 字符型常量:先通过ASCII码表映射为整数,再按整型补码规则存储,本质与整数存储完全一致;

  5. 本章节为底层原理知识,入门阶段需牢记核心存储规则,详细编码逻辑将在后期专题章节深入讲解。