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

C语言数据存储

一、整形在内存中的存储

整形数字在内存中以二进制的的数据进行存储,整数有三种编码:原码、反码、补码

源码:十进制数据转为二进制,就为源码

反码:符号位不变,其他位取反就为整数的反码

补码:反码 + 1,就为补码

正整数,源码、反码、补码相同,负整数,原码、反码、补码需要计算得到

整形数据在内存中存储的是补码。

为什么计算机中一律采用补码进行存储?

使用补码,可以将符号位和数值域统一处理;CPU中只有加法计算,可以将加法和减法进行统一处理,补码与源码相互转换其运算过程是相同的(补码 = 源码取反 + 1,原码 = 补码取反 + 1),不需要额外的硬件电路。

1、大小端

小端字节序存储:把一个数字的高位字节序存放在高地址中的方式

大端字节序存储:把一个数字的高位字节序放在低地址中的方式

大小端存储方式取决于硬件,常见的x86是小端模式

整形提升:

1、正数整形提升补码高位补0

2、负数整形提升补码高位补1,符号位不变

int 类型转 char类型时,采用低位截断(截断截的是存储在内存中的补码的低位),与大小端没有关系

打印a,char 在内存中表示有符号char,取值范围:-128 ~ 127,所以-128可以保存在char中,-128在内存中的补码11111111 11111111 11111111 10000000,截断低8位10000000,因为打印的方式为u%,那么需要做整形提升,10000000为-128,整形提升得到内存中的数据:11111111

11111111 11111111 10000000(补码),但是要求是以无符号的整数打印,所以最高位1有权重,表示2的31次方,所以char a = -128已无符号整形的格式打印的结果为4294967168,结果非常大。

二、浮点型存储

char、int、uint、long、long long这些整形定义在limits.h的头文件中

float、double、long double这些浮点型定义在float.h的头文件中

从此图中看出,整形和浮点型在内存中存储的方式是不一样的。

1、浮点型数据存储规则

相关文章:

  • 【b站计算机拓荒者】【2025】微信小程序开发教程 - chapter3 项目实践 - 2信息采集
  • Python打卡训练营打卡记录day38
  • 科技趋势分析系统 BBC (Big Bang of Computing)
  • 大模型(4)——Agent(基于大型语言模型的智能代理)
  • MYSQL 学习笔记
  • 解决ubuntu服务器未使用空间的分配
  • VUE npm ERR! code ERESOLVE, npm ERR! ERESOLVE could not resolve, 错误有效解决
  • 【OS安装与使用】part7-ubuntu22.04LTS 的 docker 安装与使用(实例:MTransServer服务部署)
  • GitHub 趋势日报 (2025年05月26日)
  • IDEA使用Git进行commit提交到本地git空间后撤回到commit版本之前
  • 新增 git submodule 子模块
  • 爬虫入门指南-某专利网站的专利数据查询并存储
  • 云原生技术架构技术探索
  • strace命令+SystemTap脚本排查内存问题
  • Spyglass:项目目录中的报告结构
  • 34. 自动化测试开发之使用oracle连接池实现oracle数据库操作
  • JavaScript变量宣言三剑客:var、let、const的奇幻冒险
  • 尚硅谷redis7 55-57 redis主从复制之理论简介
  • 多模态机器学习
  • 使用 curl 进行 HTTP 请求:详尽指南
  • 网站建设目标个人博客dw/windows优化大师怎么用
  • 曲靖网站制作一条龙/网站seo视频狼雨seo教程
  • 长春是几线城市2020排名/长沙优化科技有限公司
  • 网站如何做熊掌号/北京做网络优化的公司
  • 网站换域名做301会有影响/如何做好网络营销
  • python做网站的好处/推广app赚钱项目