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

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、浮点型数据存储规则

http://www.xdnf.cn/news/9271.html

相关文章:

  • 操作系统——第四章(文件共享、保护、层级结构、系统布局..)
  • Docker+MobaXterm+x11实现容器UI界面转发本地
  • Python map()函数详解:批量数据处理的瑞士军刀
  • STM32 Keil工程搭建 (手动搭建)流程 2025年5月27日07:42:09
  • STM32之IIC(重点)和OLED屏
  • Spring Boot整合JWT实现认证与授权
  • screen开启和删除session会话
  • JSONP跨域原理全解析
  • OpenCV 图像像素的读写操作
  • SNMPv3基础概念
  • 02_MQ常见问题
  • 科研课题验收测试报告:用途与类型深度解析~
  • DFS入门刷题c++
  • 工业级UART数据转发芯片EU104 低功耗多串口芯片 1主4从多串口转发
  • 26、请求处理-【源码分析】-Rest映射及源码解析
  • 机器学习知识体系:从“找规律”到“做决策”的全过程解析
  • 走进黑盒:SQL 是如何在数据库中执行的?
  • Linux基础命令掌握-cut命令
  • 0527漏洞原理:SQL注入笔记
  • CSRF和XSS攻击防御指南
  • 院校机试刷题第十三天:代码随想录算法训练营第七天
  • 调不好分布式锁?HarmonyOS + Redis 分布式锁失效排查全路径
  • Oracle20200714GI_PSU补丁流程及问题收集
  • 一种比较精简的协议
  • python学习day30
  • SSTable(Sorted String Table)结构与用途详解
  • 数据类型(基本类型)day2
  • C-内存函数,动态内存
  • Qt布局连续添加控件
  • Web3怎么本地测试连接以太坊?