(C语言)数据在内存中的储存

目录

1>.存储的方式

2>.关于用%d来打印char类型数

3>.不同类型能表示的范围

4>.浮点数在内存中的存储

储存方式

E在内存中的存储

E在内存中的取出

1)E不全是0和1

2)E全为0

3)E全为1


整数和浮点数在内存中是以二进制的方式进行储存,有原码,反码,补码三种形式;在内存中是以补码的方式进行储存的,在操作符中有详细讲解;(C语言)操作符(全网最全,最详细)-CSDN博客

1>.存储的方式

存储的方式分为两种:大端字节序存储,小端字节序存储;

大端字节序存储:将一个数据的低位字节内容存放在高地址处,高位字节内容存放在低地址处;

小端字节序存储:将一个数据的高位字节内容存放在高地址处,低位字节内容存放在低地址处;

vs整形运用的是小端字节序存储;

总结来说就是:正着放是大端,反着放是小端;

2>.关于用%d来打印char类型数

注意:前面补位补的是什么;

3>.不同类型能表示的范围

相当于一个循环

unsigned char类型因为没有符号位,所以它的范围是0-255;

short类型是:-32768-32767;

注意:char a=0其实a储存的是ASCII码值为0的字符;

4>.浮点数在内存中的存储

5.5的二进制就是101.1,其中的1和0都是二进制,0.1表示2^(-1);

举例来说:5.5=(-1)^0*1.011*2^2

注意:因为小数都是2的(-n)次方相加得到的,所以在储存的时候浮点数可能不能精确储存;

储存方式

M可以写成1.xxxxxx,其中xxxxxx是小数部分,在计算机内部保存M的时候,默认这个数的第一位是1,因此可以舍去,不用保存,只保存后面的xxxxxx,比如:1.01只保存01,等到读取的时候,再把第一位的1加上就可以了,这样可以节省一个比特位,让M可以多占用一个比特位;

E在内存中的存储

为了保证在内存中E的储存是一个正数,对应于32位机器,我们需要加上一个中间量127;也就是-5在内存中是-5+127=122,就是0111 0000;

E在内存中的取出

1)E不全是0和1

指数在取出的时候,计算值减去127(或1023),得到真实值,再将有效值数值M前加上一位1;

2)E全为0

减去127(或1023)或是2^(-127)是一个接近于0的很小的数字,当作0看

3)E全为1

其表示+(-)127,看作一个无穷大的数;

相关推荐
for_ever_love__5 小时前
python爬虫: 数据解析
开发语言·爬虫·python·xpath
学习星球5 小时前
AI 一句话生成 3D 游戏世界:腾讯 HY-World 2.0 开源深度解析与本地实战
开发语言·人工智能·游戏·3d·ai·课程设计·ai编程
名字还没想好☜5 小时前
Go 用 -race 抓数据竞争:一个偶发崩溃的排查、原理与修复
开发语言·后端·golang·go
小灰灰搞电子5 小时前
Rust std::vec::Vec<T>动态数组:所有相关 API 全面介绍
开发语言·rust
路上有只喵5 小时前
STM32 UI Designer:一个开源的嵌入式 LCD 界面可视化设计工具(自动生成 C 代码)
c语言·驱动开发·stm32
学习星球5 小时前
CodeWhale 深度剖析:从 DeepSeek-TUI 到 40.9K Star 的 Rust 终端编程 Agent
开发语言·后端·rust
灵晔君6 小时前
【Linux】基础IO(一)——文件、上层C库文件操作、底层linux原生IO
linux·运维·c语言
曹牧6 小时前
C#:线程间操作无效,不是从创建控件线程访问
开发语言·c#
承渊政道8 小时前
【Python编程—从入门到实践】(Python条件判断完全入门:从布尔表达式到列表中的if实战)
开发语言·python·pycharm·条件判断·布尔表达式
小灰灰搞电子8 小时前
Rust 相关容器(集合)详解
开发语言·容器·rust