浮点数显示为字符串——小班讨论3

博客简介

本篇博客是计算机系统小班讨论内容之一,用于记录学习过程

  • 分析代码
  • 定义一个整型数组,输出 HNU!

分析代码

#include   
int main()  
{   
	float a[3]={
	1143139122437582505939828736.0,
	76482007234779498639230238720.0,
	9.222452464e-39};  
	printf("%d\n", sizeof(float));   
	printf("%s\n",a);   
	return 0;  
}

在这里插入图片描述

规格化3个浮点数

  • 1143139122437582505939828736.0
value=1143139122437582505939828736=
111011000110010101001000000000000000000000000000000000000000000000000000000000000000000000
=1.11011000110010101001*2^89
s=0
exp=89+127=1101 1000‬
frac=11011000110010101001000
value=01101100 01101100 01100101 01001000
  • 76482007234779498639230238720.0
value=76482007234779498639230238720.0
111101110010000001101111000000000000000000000000000000000000000000000000000000000000000000000000
s=0
exp=95+127=1101 1110
frac=11101110010000001101111
value=01101111 01110111 00100000 01101111
  • 9.222452464e-39
    注意,这个数表示之后的阶码E=-127比最小规格化数的阶码-bit+1=-126还要小,所以他是一个非规格化数:
value=9.222452464e-39=0.000000000000000000000000000000000000009222452464
0.
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011001000110110001110010000000000000101011110101000111
s=0
exp=‬
frac=11001000 11011000 11100100
value=0000000 01100100 01101100 01110010

查看内存

最后内存中存储的值就是:
转化为ascii码:

01001000	01100101	01101100	01101100	01101111	00100000	01110111	01101111
h			e			l			l			o		 	space		w			o
01110010	01101100	01100100	00000000
r			l			d			

在这里插入图片描述
我们发现将内存段分宜为ascii码之后的结果就是hello world

定义一个整型数组,输出 HNU!

将三个值翻译为ascii码

01001110 	01001110 	01010101	00100001
H			N			U			!

用小端法表示并且转换为整数int

00100001	01010101	01001110 	01001110 	
int=559,238,734

运行代码

#include   
int main()  
{   
	int a[3]={559238734};  
	printf("%d\n", sizeof(int));   
	printf("%s\n",a);   
	return 0;  
}

在这里插入图片描述

你可能感兴趣的:(计算机系统)