数据在内存中的存储

一.整数在内存中的存储

整数在内存中存储的是补码。

1.补码是什么?

答:反码+1得到补码。反码由原码符号位不变,其他位取反得到。

2.为什么整数在内存中由补码储存?

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

二.大小端字节序和字节序判断

1.大小端的定义

大端(存储)模式:是指数据的低位字节内容保存在内存的高地址处,而数据的高位字节内容,保存在内存的低地址处。

举个例子:0x11223344在大端存储上是这样的:11 22 33 44。

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

举个例子:0x11223344在小端存储上是这样的:44 33 22 11。

2.判断大小端的方法

问题:写一个代码确定当前机器是大端还是小端?

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;
}

解释:取i的地址,将i的地址转换成char*类型,然后解引用,取得是第一个字节。如果是1,说明是小端存储,如果是0,说明是大端存储。

三.浮点数存储

1.二进制浮点数的表示

二进制浮点数的表示:V   =  (−1) ^S ∗  M ∗ 2^E。其中(-1)^S为符号位,M为>=1且<2的有效数字,2^E是位数。

举个例子:5的二进制浮点数存储用上面的方式表示为1.01∗2^2(二进制表示为101)M是1.01,E是2,S是0。-5的表示为-1.01∗2^2。其中S不一样,S是1。

2.在不同位的环境下浮点数的存储

在32位

最高的1位存储符号位S,接着的8位存储指数E,剩下的23位存储有效数字M。

在64位

最高的1位存储符号位S,接着的11位存储指数E,剩下的52位存储有效数字M。

3.浮点数存的过程

对M

由于M是>=1且<2,所以M在存储的时候会将1舍弃,只存后面的小数部分,等到读取的时候在加上。这么做的目的是节省空间。

对E

因为科学计数法E可能是负数,所以在存储的时候会加上一个中间数。对于8位E,中间数是127;对于11位E,中间数是1023。

E从内存中被取出的三种情况

第一种:E不全为0或不全为1

正常存储。将E减掉中间值得到真实值,在将M的1给加上

第二种:E全为0

这时,浮点数的指数E等于1-127(或者1-1023)即为真实值,有效数字M不再加上第⼀位的1,而是还 原为0.xxxxxx的小数。这样做是为了表示±0,以及接近于0的很小的数字。

第三种:E全为1

如果有效值M全为0,可以表示±无穷大。

weixin073智慧旅游平台开发微信小程序+ssm后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值