将十进制数17.296875转换成IEEE754格式的32浮点数的二进制存储
十进制数17.296875转换成IEEE754格式的32浮点数的二进制存储表示为10001.010011。
十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并。十进制数17 = 1*2^4+1*2^0= 二进制数10001。
十进制数0.296875= 0.296875 * 2 = 0.59375 ,0.59375 * 2 = 1.1875,0.1875* 2* 2 =0.75,0.75* 2 = 1.5,0.5*2 =1。二进制数为0.010011。即十进制数17.296875 = 二进制数(10001+0.010011)。
扩展资料:
十进制整数转换为二进制整数采用"除二取余,逆序排列"法。用二去除十进制整数,可以得到一个商和余数;再用二去除商,又会得到一个商和余数,如此进行,直到商为零时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。
十进制小数转换成二进制小数采用"乘二取整,顺序排列"法。用二乘十进制小数,得到积,将积的整数部分取出,再用二乘余下的小数部分,如此进行,直到积中的小数部分为零。然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。
2022-05-15 广告
十进制浮点数,整数部分转换成二进制,采用除2取余法,将余数从低到高排列,即为整数的二进制数;小数部分转换成二进制,采用乘2取整法,将取整数顺序排列,即为小数的二进制数。小数部分乘2直到小数部分为0,或取到想要的位数,或循环出现前。
一、整数部分
20/2=10....0
10/2=5....0
5/2=2....1
2/2=1....0
1/2=0.....1
二、小数部分
0.163*2=0.3260
0.326*2=0.6520
0.652*2=1.3041
0.304*2=0.6080
0.608*2=1.2161
0.216*2=0.4320
0.432*2=0.8640
0.864*2=1.7281
0.728*2=1.4561
0.456*2=0.9120
不要求精度时,通常取到8~10位
20.163=10100.0010100110
2.移动小数点到第1、2位之间,得e的值
10100.0010100110=1.01000010100110*2的4次方e=4(小数点移动4位)
3.求出S、E、M的值
S=0,E=4+127=131,M=01000010100110
S由小数点的后一位可以看出,0为正数,1为负数。
0100000101000010100110000000000
IEEE754标准中32位浮点数表示
SEM
S是符号位占1位,E是阶码占8位,M是尾数占23位。
当尾数的值不为0时,尾数的最高有效位应为1,这称为浮点数的规格化表示,这样形式的叫规格化。
扩展资料
十进制浮点型数据转换成二进制
整数部分:除以2,取出余数,商继续除以2,直到得到0为止,将取出的余数逆序
小数部分:乘以2,然后取出整数部分,将剩下的小数部分继续乘以2,然后再取整数部分,一直取到小数部分为零为止。如果永远不为零,则按要求保留足够位数的小数,最后一位做0舍1入。将取出的整数顺序排列。
举例:22.8125转二进制的计算过程:
整数部分:除以2,商继续除以2,得到0为止,将余数逆序排列。
22/211余0
11/25余1
5/22余1
2/21余0
1/20余1
得到22的二进制是10110
(17.296875)10*(2^16)10
=(17.296875)10*(65536)10
=(1133568)10
>(1133568)10 //去掉小数,保留整数部分
=(114C00)16
=(0001 0001 0100 1100 0000 0000)2
=(000100010100110000000000)2
因为最初乘了65536,即2的16次方,所以换算成二进制时应右移16位,去掉前导零,
即(10001.00010100110000000000000)2
单精度浮点数保存的字节格式如下:
地址:+0 +1 +2 +3
内容:SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM
根据IEEE浮点数的定义,将上述二进制数规格化:
(17.296875)10
>(10001.0100110000000000)2
>+1.00010100110000000000 * (2^4)
符号S为正,等于0 B;
指数EEEEEEEE为4+127=131,等于10000011 B;
尾数为00010100110000000000000 B;
合成后为
0 10000011 000 1010 0110 0000 0000 0000
若将上述值表示为十六进制数,则为(41 8A 60 00)16。