数据在内存中的存储方式

2024-01-07 23:34:33

前言:

期末临近,继续复习!

今天要复习的内容是数据在内存中的存储,主要是整型与浮点两种,还有大小端的介绍。

提出问题

7ebe3613f1304b5bbff7dcae0851080d.png

打印结果是255? ? ? ? ? ? -1

为什么?

首先我们要知道数据都是以二进制的形式存储于计算机中的,而不同的类型在不同平台下占用的空间大小也不一样,具体可看下图

76040534a5784efd87059fae508567d8.png

数据来源http://t.csdnimg.cn/2gnJv

在此基础上我们还要知道整数默认是4个字节,小数是8个字节

整数在内存中以补码形式存在

-1:11111111 11111111 11111111 11111111

把-1赋值给char类型的a,会发生截断,之后后八位被存进去了

a:11111111

同理,b:11111111

在打印的时候是以%d打印的,因此a,b要发生整形提升,a作为无符号数提升后为00000000 00000000 00000000 11111111

b作为有符号数变为11111111 11111111 11111111 11111111

这些都是补码,被读取后一个数255,一个是-1

在此基础上我们对char进一步分析,他可以存的数有以下这些

86f00ae8373942219c8a93b952a0c0bc.jpeg

?

对于有符号char来说他的范围是-128到127

对于无符号char来说它的范围是0到255,都是存了256个不同的数,而且当你存的数字超过他的范围时,就会开始循环了如下图所示

cf8136101c00421ba71101da36d8ac27.jpg

?举个例子,对于无符号数255,他的补码是11111111

那么你存一个无符号256此时存进去的就是00000000,每次循环就是256个数,具体顺序就是上图。

?

?

?

?

?

?

文章来源:https://blog.csdn.net/2301_79551553/article/details/135429359
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。