您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 浮点32位16进制和10进制转换
1.十进制数形式由数码0~9和小数点组成。例如:0.0,.25,5.789,0.13,5.0,300.,-267.8230等均为合法的实数。2.指数形式由十进制数,加阶码标志“e”或“E”以及阶码(只能为整数,可以带符号)组成。其一般形式为aEn(a为十进制数,n为十进制整数)其值为a*10,n如:2.1E5(等于2.1*10的5次方),3.7E-2(等于3.7*10的-2次方)0.5E7(等于0.5*10的7次方),-2.8E-2(等于-2.8*10的-2次方),以下不是合法的实数345(无小数点)E7(阶码标志E之前无数字)-5(无阶码标志)53.-E3(负号位置不对)2.7E(无阶码)标准C允许浮点数使用后缀。后缀为“f”或“F”即表示该数为浮点数。如356f和356.是等价的。例2.2说明了这种情况:voidmain(){printf(%f\n%f\n,356.,356f);}标准4字节浮点型在计算机里存储方式如下图IEEE754标准中浮点数表示格式IEEE规定的浮点数表示法是一种科学计数法,用符号(正或负)、指数和尾数来表示,底数被确定为2。也就是说浮点数被表示为尾数乘以2的指数次方再带上符号。具体格式如下:符号域指数域小数域指数偏移量单精度浮点数1位[31]8位[30-23]23位[22-00]127双精度浮点数1位[63]11位[62-52]52位[51-00]1023下面以单精度浮点数为例来介绍浮点数的三个区域:符号域:符号域占1位,0表示正数,1表示负数。指数域:指数域共有8位,可表达的范围为:0~255。为能处理负指数,实际指数位存储在指数域中值减去一个偏移量(单精度为127,双精度为1023)。单精度浮点数的偏移量为127,故实际可表达的指数值的范围为-127~128。尾数域:尾数域共有23位。由于规范浮点数的小数点左侧必须为1,所以在保存尾数时,可以省略小数点前面这个1,从而腾出一个二进制位来保存更多的尾数。举例:比如对于单精度数而言,二进制的1001.101(对应于十进制的9.625)可以表达为1.001101×2^3,所以实际保存在尾数域中的值为00110100000000000000000,即去掉小数点左侧的1,并用0在右侧补齐。(整数部分(9)的计算:1001小数部分(0.625)的计算:0.625*2=1.25--------10.25*2=0.5----------00.5*2=1.0-----------1所以用二进制科学表示方式为:1.001101*2^3)实数与浮点数之间的变换举例例一:已知一个单精度浮点数用16进制数表示为:0xC0B40000,求此浮点数所表达的实数。先转换为二进制形式(注意:对于负数二进制补码转换成十进制一定要:先取反,后加1)C0B4000011000000101101000000000000000000按照浮点数格式切割成相应的域11000000101101000000000000000000经分析:符号域1意味着负数;指数域为129意味着实际的指数为2(减去偏差值127);尾数域为01101意味着实际的二进制尾数为1.01101(加上隐含的小数点前面的1)。所以,实际的实数为:=-1.01101×2^2=-(1*2^0+1*2^(-2)+1*2^(-3)+1*2^(-5))×2^2=-(1+0.25+0.125+0.03125)*4=-1.40625*4=-5.625例二:将实数-9.625变换为相应的浮点数格式。1)求出该实数对应的二进制:1001.101,用科学技术法表达为:-1.001101×2^3;2)因为负数,符号为1;3)指数为3,故指数域的值为3+127=130,即二进制的10000010;4)尾数为1.001101,省略小数点左边的1后为001101,右侧0补齐,补够23位,最终尾数域为:00110100000000000000000;5)最终结果:11000001000110100000000000000000,用16进制表示:0xC11A0000。
本文标题:浮点32位16进制和10进制转换
链接地址:https://www.777doc.com/doc-7425470 .html