C语言学习打卡2021.11.17

c语言编程 C语言入门 c语言(C语言程序设计教程 c语言视频教程 c语言零基础入门教程 学习c语言 c语言视频教程 c语音 C语言教程 C语言编程项目 C语言_哔哩哔哩_bilibiliC语言学习打卡2021.11.17https://www.bilibili.com/video/BV1q54y1q79w?我的github主页

remeke (remeke) · GitHubC语言学习打卡2021.11.17https://github.com/remeke今天继续学习了数据的存储内容。

浮点型数据的存储方式

#include<stdio.h>
#include<windows.h>
int main()
{
	int n=9;
	float *pFloat=(float*)&n;
	printf("n的值为:%d\n",n);
	printf("*pFloat的值为:%f\n",*pFloat);
	
	*pFloat=9.0;
	printf("num的值为:%d\n",n);
	printf("*pFloat的值为:%f\n",*pFloat);
	return 0; 
}

C语言学习打卡2021.11.17

 C语言学习打卡2021.11.17

 例如:9.0可以写成二进制1001.0,再化成(-1)^0*1.001*2^3

S-0,M-1.001,E-3

IEEE 754规定:对于32位(double类型)的浮点数,最高的一位是符号位S,接着的8位是指数E,剩下的23位为有效数字M

C语言学习打卡2021.11.17

 

IEEE 754规定:对于64位(float类型)的浮点数,最高的1位是符号位S,接着的11位是指数E,剩下的52位为有效数字M

C语言学习打卡2021.11.17

 IEEE 754还有一些其他的规定

关于M:由于M的第一位总是1,因此可以被省去,只保留后面的小数部分,例如保存1.01的时候,只保存01,等到读取的时候再把第1位的1加上去,这样是为了节省1位有效数字,以double类型为例,等于可以保存24位有效数字。

关于E:由于E是1个无符号整数。如果E为8位,它的取值范围为0-255,如果E为11位,它的取值范围为0-2047,但是再科学计数法中E是可以出现负数的,所以 IEEE 754规定,E的真实值必须再加上一个中间数,对于8位的E,这个中间数为127,对于11位的E,这个中间数是1023.比如,2^10的E是10,所以保存成32位浮点数时,必须保存成10+127=137,即10001001.

指数E从内存中取出还可以再分成三种形式

C语言学习打卡2021.11.17

C语言学习打卡2021.11.17 

 C语言学习打卡2021.11.17

 对于开头的题目的解释:

C语言学习打卡2021.11.17

 

上一篇:【推荐系统论文精读系列】(八)--Deep Crossing:Web-Scale Modeling without Manually Crafted Combinatorial Features


下一篇:41.第十章 网络协议和管理配置(二)