整型数据在内存中的存储

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

引言:

int a=20;
int b=-10;

我们知道为a分配四个字节的空间。那如何存储?

下来先了解下面的概念

一、原码反码补码

计算机中的有符号数(是整型,与浮点数在内存中的存储无关)有三种表示方法,即原码反码补码。

三种表示方法均有符号位数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位三种表示方法各不相同。

辨析:

有符号数分为正数和负数,正数和无符号数一样,原码反码补码相同,只有有符号数中的负数三者才不同。

image.png

原码:

直接将整型按照正负数的形式翻译成二进制即可

反码:

将原码的符号位不变,其他位依次按位取反就可以得到

补码:

反码+1就得到补码。

例子:

image.png

二、对于整型来说:数据存放内存中其实存放的是补码

为了验证,我们将-20的补码转化为十六进制位

image.png

如何将二进制位转化为十六进制:

4个二进制位表示一个十六进制位

以补码形式存储的原因:

在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理(CPU只有加法器);此外补码和原码可以相互转换,其运算过程是相同的。

举个例子:

image.png

发现补码计算的结果是正确的!

三、大端小端存储方式

大端(存储)模式:(大端字节序存储模式)

指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;

小端(存储)模式:(小端字节序存储模式)

指数据的低位保存在内存的低地址中,而数据的高位,保存在内存的高地址中。

内存的低地址和高地址:

一般内存块左边就是低地址,右边是高地址。

数据的高位和低位:

与平常理解的高位和低位意义相同,例如正数123,1就是百位就是高位,而3是个位,就是低位!

我们描述的是字节存放的顺序,而不是比特位存放的顺序!

image.png

相关文章
|
11天前
|
存储 C语言
数据在内存中的储存
数据在内存中的储存
12 3
|
11天前
|
存储 Java C++
Java虚拟机(JVM)管理内存划分为多个区域:程序计数器记录线程执行位置;虚拟机栈存储线程私有数据
Java虚拟机(JVM)管理内存划分为多个区域:程序计数器记录线程执行位置;虚拟机栈存储线程私有数据,如局部变量和操作数;本地方法栈支持native方法;堆存放所有线程的对象实例,由垃圾回收管理;方法区(在Java 8后变为元空间)存储类信息和常量;运行时常量池是方法区一部分,保存符号引用和常量;直接内存非JVM规范定义,手动管理,通过Buffer类使用。Java 8后,永久代被元空间取代,G1成为默认GC。
22 2
|
4天前
|
存储
|
10天前
|
存储 C语言
【C语言进阶篇】整数在内存的存储——原码、反码、补码
【C语言进阶篇】整数在内存的存储——原码、反码、补码
|
19天前
|
消息中间件 存储 Kafka
实时计算 Flink版产品使用问题之 从Kafka读取数据,并与两个仅在任务启动时读取一次的维度表进行内连接(inner join)时,如果没有匹配到的数据会被直接丢弃还是会被存储在内存中
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
15天前
|
存储
数据在内存中的存储(2)
数据在内存中的存储(2)
25 5
|
15天前
|
存储 小程序 编译器
数据在内存中的存储(1)
数据在内存中的存储(1)
29 5
|
15天前
|
存储 安全 Java
SpringSecurity6从入门到实战之初始用户如何存储到内存
Spring Security 在 SpringBoot 应用中默认使用 `UserDetailsServiceAutoConfiguration` 类将用户信息存储到内存中。当classpath有`AuthenticationManager`、存在`ObjectPostProcessor`实例且无特定安全bean时,此配置生效。`inMemoryUserDetailsManager()`方法创建内存用户,通过`UserDetails`对象填充`InMemoryUserDetailsManager`的内部map。若要持久化到数据库,需自定义`UserDetailsService`接口实
|
14天前
|
存储 编译器 C语言
数据在内存中的存储
数据在内存中的存储
17 2