300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 数据存储之大小端存储模式

数据存储之大小端存储模式

时间:2024-01-24 20:24:29

相关推荐

数据存储之大小端存储模式

我们知道变量的创建是要在内存中开辟空间,而空间的大小是根据不同的类型来决定的。那么数据在所开辟的内存中到底是如何存储的呢?

先来看一下下面的整数在内存中是怎样存储的

在计算机中整数有三种表达方式,即原码、反码和补码。三种表示方法均有符号位和数值位两部分组成。

符号位:都是用0表示“正”,用1表示“负”。

数值位:正整数三种表达方式都是一样的(正数的原、反、补码都相同,),负整数则各不相同。

原码:直接将二进制按照正负数的形式翻译成二进制就可以。

反码:将原码的符号位(第一位)不变,其他位依次按位取反就可以得到了。

补码:反码+1就得到补码。

对于整形数据存放内存中其实存放的是补码。在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域 统一处理; 同时,加法和减法也可以统一处理(CPU只有加法器)。

来看看在内存中的存储(十六进制显示)。

我们可以看到对于a和b分别存储的是补码。但是我们发现顺序有点不对劲,这里就涉及了大小端存储问题。

什么是大小端:

大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地 址中;

小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地 址中。

怎样才能知道我们用的机器是那种存储模式呢?

看以下代码

#include <stdio.h>int check_sys(){int i = 1;return (char)i;}int main(){int ret = check_sys();if (ret == 1){printf("小端\n");}else{printf("大端\n");}return 0;}

更多内容请移步个人博客:乌托邦

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。