数据存储(改进版)

如果你不相信努力和时光,那么成果就会是第一个选择辜负你的。不要去否定你自己的过去,也不要用你的过去牵扯你现在的努力和对未来的展望。不是因为拥有希望你才去努力,而是去努力了,你才有可能看到希望的光芒。数据存储(改进版),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

目录

知识回顾

当E全为0时

当E全为1时


知识回顾

在学习之前我想问大家一个问题,就是下面这个代码的运行结果是什么

int main()
{
	int n = 9;
	float* pFloat = (float*)n;

	printf("%d", n);
	printf("%f", *pFloat);

	*pFloat = 9.0;
	printf("%d", n);
	printf("%f", *pFloat);

	return 0;
}

怎么样,你是否能做出来呢?如果不能就请大家来复习复习前面的知识吧。

前面的学习就请大家转到这里来回顾一下https://blog.csdn.net/m0_73888323/article/details/128222771

那么这里我要补充的是当E全为0或者1的时候,我们取出来的时候又该怎么取呢?我们知道当我们在存储E的时候需要加上一个值,在32位机器上,我们需要加上127,而在64位机器上我们需要加上1023。相反的当我们拿出来的时候就需要减上一个值,当E为其他值就正常的减去就行了,可是当E为0或者1的时候,就需要不同的方法。

当E全为0时

如果还是按照常规的方式那么0-127=-127,2^-127是一个很小很小的数,它再乘上前面的数还是接近于0。所以我们就不能用常规的方法。

浮点数的指数E等于1-127或者是1-1023,而有效值的M不再加上第一位的1,而是还原成0.xxxxxx的小数。这样是为了表示+=0,以及接近于0的很小的数字。

当E全为1时

当存储的时候E全为1时,我们就可以把它看作+=无穷大,因为2^127本身就是一个相当大的数字,更不用说再乘上前面的数字,所以我们就可与把它看作是无穷大。

这些就是我补充的内容,希望能对你有所帮助

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/192675.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!