当前位置: 首页 > news >正文

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

http://www.jsqmd.com/news/767325/

相关文章:

  • Ollama桥接器:实现本地大模型与AI应用无缝对接的协议转换方案
  • AI命令行助手aidev:提升开发效率的智能编程副驾实战指南
  • 宏基因组分析实战:用BWA、Bowtie2和Salmon三种工具计算基因丰度,哪个更适合你的数据?
  • 2026年评价高的台州豪车维修保养优选公司推荐 - 行业平台推荐
  • Arm Cortex-R82 AArch64寄存器架构与实时系统优化
  • 别再死记硬背了!用动画图解欧拉筛和埃氏筛,5分钟搞懂核心差异
  • Power BI数据导出新玩法:结合Power Automate与OneDrive,打造个人数据备份流水线
  • Openterface Mini-KVM:经济型USB KVM设备解析与应用
  • 荧光标记蛋白的定制解析——FITC、Cy与罗丹明
  • 基于yolo26实现的免安装环境windows版一键训练工具
  • 用友U8库存与总账进阶:自定义视图与触发器实现业务精细化管控
  • 后级DCAC核心控制算法设计
  • 四足机器人步态模仿:行为克隆与潜在变量正则化对比
  • 掌握Google OR-Tools:运筹优化工具从入门到实战的完整指南
  • React Hooks 基础入门:从“懵圈”到“真香”
  • 新手必看!C 语言函数递归从入门到精通
  • Nextpy全栈框架:用Python构建AI智能体与Web应用实战指南
  • 自媒体人,你的内容为什么总被说“没重点”?试试这个方法
  • 从F-15到F-35:聊聊那些战斗机雷达的‘视力’到底差多远(附AN/APG-63(V)3、AN/APG-81等参数对比)
  • MySQL索引底层——B+树为什么是首选?
  • 协同、耦合与对抗:人机环境系统智能的三大核心命题
  • Windows可执行文件资源编辑技术实现方案
  • 基于气象站云层实测参数的光伏出力预测与新能源调度应用研究
  • WGCNA+cytoscape构建基因表达模块网络图
  • C语言完美演绎9-23
  • 深入解析 SGD(随机梯度下降) 优化器
  • 电商智能体(包含源码)
  • 基于MCP协议的风险投资智能自动化引擎:从项目源到投后管理的全流程实践
  • 终极指南:如何用开源工具免费获取八大网盘真实下载链接,告别客户端强制安装
  • 从语言障碍到创作自由:HS2-HF_Patch如何重塑你的游戏体验