数据在内存中的存储

简介: 数据在内存中的存储

导图



整数在内存中的存储


(正,反,补)码之间的转换

对于整型数据来说:数据存储方式存的是补码

为什么?

使⽤补码,可以将符号位和数值域统⼀处理

同时,加法和减法也可以统⼀处理(CPU只有加法器)此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。


小端字节序和字节序判断


在下列代码中 “ int a = 0x11223344 ; ”,这个数字是以字节为单位倒着存储的。

为什么呢?

一图KO大小端概念

以上面代码a为栗子

判断大小端的两种方式

①指针

int main()
{
  int a = 1;
  //方式一
  if(*(char*)&a == 1)
 
  //方式二
  /*char* p = (char*)&a;
  if (*p == 1)*/
    printf("小端\n");
  else
    printf("大端\n");
  return 0;
}

②指针+函数

int check_clc()
{
  int a = 1;
  return *(char*)&a;
  //1.取出a的地址
  //强制类型转换为char*的指针,再解引用
}
int main()
{
  int ret = check_clc();
  if (ret == 1)
    printf("小端\n");
  else
    printf("大端\n");
  return 0;
}

控制台输出:小端


为什么会有大小端之分?

因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着⼀个字节,⼀个字节为8 bit 位,但是在C语⾔中除了8bit的 char 之外,还有16bit的 short 型,32bit的 long 型(要看具体的编译器),

另外,对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于⼀个字节,那么必然存在着⼀个如何将多个字节安排的问题。

因此就导致了大端存储模式和小端存储模式。


目录
相关文章
|
2月前
|
存储 编译器 C语言
【C语言篇】数据在内存中的存储(超详细)
浮点数就采⽤下⾯的规则表⽰,即指数E的真实值加上127(或1023),再将有效数字M去掉整数部分的1。
219 0
|
7天前
|
存储 机器学习/深度学习 人工智能
数据在内存中的存储
数据在内存中的存储
|
2天前
|
存储 C语言
深入C语言内存:数据在内存中的存储
深入C语言内存:数据在内存中的存储
|
9天前
|
存储
整型在内存中的存储
本文详细解释了计算机中整型数据的三种二进制表示方法:原码、反码和补码,并展示了如何将正数和负数的原码转换为反码和补码。
25 0
|
18天前
|
缓存 NoSQL 算法
14)Redis 在内存用完时会怎么办?如何处理已过期的数据?
14)Redis 在内存用完时会怎么办?如何处理已过期的数据?
28 0
|
19天前
|
存储 弹性计算 网络协议
阿里云ECS内存型实例规格族特点、适用场景、指标数据参考
阿里云ECS提供了多样化的内存型实例规格族,专为需要高性能内存资源的应用场景设计。从最新的r8a系列到经过优化的re6p系列,旨在提供稳定、高效且安全的计算环境。这些实例不仅具备强大的计算性能与内存配比,还通过支持ESSD云盘和高效网络协议,显著提升了存储I/O能力和网络带宽,适用于大数据分析、高性能数据库、内存密集型应用等多种场景,为用户带来卓越的计算体验。本文将详细解析阿里云ECS中的多个内存型实例规格族,包括它们的核心特点、适用场景、实例规格及具体指标数据,为用户在云计算资源选型时提供参考。
|
2月前
|
存储 监控 Docker
如何限制docker使用的cpu,内存,存储
如何限制docker使用的cpu,内存,存储
|
2月前
|
编译器 C++
virtual类的使用方法问题之C++类中的非静态数据成员是进行内存对齐的如何解决
virtual类的使用方法问题之C++类中的非静态数据成员是进行内存对齐的如何解决
|
3月前
|
存储 分布式计算 Hadoop
HadoopCPU、内存、存储限制
【7月更文挑战第13天】
240 14
|
3月前
|
存储 固态存储 芯片
计算机中内存与存储
【7月更文挑战第28天】
49 1

热门文章

最新文章