短浮点格式
㈠ 试将二进制数(-0.1101)用IEEE短浮点数格式表示出来
解:0 .1101 = 1 .101 × 1/2 。(规格化)
符号位= 1 。
阶码= 127( 32位短浮点数偏置值)+(- 1)(阶码 ) = 126 。
1 ,01111110 ,10100000000000000000000 。
结果= BF500000H 。
㈡ (-0.1101)是个二进制数,用IEEE 754短实数浮点格式表示!
半精度浮点数保存的字节格式如下:
地址:+0 +1
内容:SEEE EEMM MMMM MMMM
根据IEEE浮点数的定义,将上述二进制数规格化:
(-0.1101)2
>-1.101 * (2^-1)
符号S为负,等于1 B;
指数EEEEE为-1+16=15,等于01111 B;(半精度)
尾数为1010000000 B;(半精度)
合成后为
1 01111 10 1000 0000 (半精度) =BE80 H
㈢ 浮点数格式是什么
为便于软件的移植,浮点数的表示格式应该有统一标准(定义)。1985年IEEE(Institute of Electrical and Electronics Engineers)提出了IEEE754标准。该标准规定基数为2,阶码E用移码表示,尾数M用原码表示,根据原码的规格化方法,最高数字位总是1,该标准将这个1缺省存储,使得尾数表示范围比实际存储的一位。实数 的IEEE754标准的浮点数格式为:
具体有三种形式:
IEEE754三种浮点数的格式参数
类型 存储位数 偏移值
数符(s) 阶码(E) 尾数(M) 总位数 十六进制 十进制
短实数(Single,Float) 1位 8位 23位 32位 0x7FH +127
长实数(Double) 1位 11 位 52位 64位 0x3FFH +1023
临时实数(延伸双精确度,不常用) 1位 15位 64位 80位 0x3FFFH +16383
对于阶码为0或为255(2047)的情况,IEEE有特殊的规定:
如果 E 是0 并且 M 是0,这个数±0(和符号位相关) 如果 E = 2
㈣ 计算十进制数37.25的IEEE754短浮点数的十六进制格式;
单精度符点数的表示格式为:从高到低依次为1位符号位,8位指数位,23位小数位。
首先把浮点数按二进制形式表示(以下过程不要想得太复杂):
-3.125
=
-11.001
首先把小数点往左移,直到小数点的左边只有一个“1”为止。该例中就是左移一位,变成-1.1001
因为小数位是23位,所以现在把小数点的右边“1001”往后被0,直到补够23位为止,也就是要补19个0,变成:10010000000000000000000
现在计算指数位。刚才说是小数点左移,直到左边只有一个“1”为止。但是如果浮点数本身是小于1的,比如0.125用二进制表示是0.001,此时应该右移3位才对。这种情况下把“右移3位”看成是“左移-3位”,指数位的计算方法就是用127加上左移的位数。该例中因为左移了一位,所以指数位是128.注意,原先小数点左边的还剩下一个“1”是没用的,指数位就是127加上左移位数。用二进制表示,指数位是1000000.
因为-3.125是个负数,所以符号位为1.因此,-3.125的二进制形式是:
1
10000000
10010000000000000000000
写成十六进制是:c0480000
在程序里验证下:
float
f
=
-3.125f;
int
a
=
(int&)f;
cout<<
hex
<<
a
<
评论
0
0
加载更多
㈤ 怎么将短浮点数00111111 00010000 00000000 00000000转换成十进制
浮点数保存的字节格式如下:
地址 +0 +1 +2 +3
内容 SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM
这里
S 代表符号位,1是负,0是正
E 偏移127的幂,二进制阶码=(EEEEEEEE)-127。
M 24位的尾数保存在23位中,只存储23位,最高位固定为1。此方法用最较少的位数实现了
较高的有效位数,提高了精度。
零是一个特定值,幂是0 尾数也是0。
浮点数-12.5作为一个十六进制数0xC1480000保存在存储区中,这个值如下:
地址 +0 +1 +2 +3
内容0xC1 0x48 0x00 0x00
浮点数和十六进制等效保存值之间的转换相当简单。下面的例子说明上面的值-12.5如何转
换。
浮点保存值不是一个直接的格式,要转换为一个浮点数,位必须按上面的浮点数保存格式表
所列的那样分开,例如:
地址 +0 +1 +2 +3
格式 SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM
二进制 11000001 01001000 00000000 00000000
十六进制 C1 48 00 00
从这个例子可以得到下面的信息:
符号位是1 表示一个负数
幂是二进制10000010或十进制130,130减去127是3,就是实际的幂。
尾数是后面的二进制数10010000000000000000000
在尾数的左边有一个省略的小数点和1,这个1在浮点数的保存中经常省略,加上一个1和小数
点到尾数的开头,得到尾数值如下:
1.10010000000000000000000
接着,根据指数调整尾数.一个负的指数向左移动小数点.一个正的指数向右移动小数点.因为
指数是3,尾数调整如下:
1100.10000000000000000000
结果是一个二进制浮点数,小数点左边的二进制数代表所处位置的2的幂,例如:1100表示
(1*2^3)+(1*2^2)+(0*2^1)+(0*2^0)=12。
小数点的右边也代表所处位置的2的幂,只是幂是负的。例如:.100...表示(1*2^(-1))+
(0*2^(-2))+(0*2^(-2))...=0.5。
这些值的和是12.5。因为设置的符号位表示这数是负的,因此十六进制值0xC1480000表示-
12.5。
㈥ c语言中的字符型,短整型,整型,长整型,浮点型,都是什么,具体格式都是什么
char 字符型
short 短整型
int整形
long长整型
float(单精度),double(双精度)浮点型
㈦ 高分求-1000.5的二进制,转换成 短浮点数格式 的过程
1 10001000 11110100010000000000000
将1000.5化成二进制为1111101000.1;
将1111101000.1的小数点向左移9位使之变为大于1、小于2的小数1.1111010001;
将1.1111010001中的1.删除,并在1111010001的右侧用0补齐23位形成尾数11110100010000000000000;
恢复时小数点要向右移9位,所以阶码值为+9即1001,用移码表示为127+9=136即10001000;
题设是负数,所以符号位取1;
将符号、阶码、尾数的二进制依次连写起来生成-1000.5的二进制浮点表达。
㈧ 若采用IEEE754标准的32位短浮点数格式十进制数100.5写成浮点数
0 10000101 10010010000000000000000
㈨ -34.5的ieee754短浮点数的表示方式
-34.5的IEEE754短浮点数的表示方式.
34.5的二进制数:2^5+2^1+2^(-1) = 100010.1
1.M形式为: 1.000101*2^5
得S=1, e=5 E=101+01111111 = 10000100 M=000101
所以储存格式为:1 10000100 000101000000000000000000
㈩ 用IEEE754短浮点数格式表示-365.59375
32位浮点数表示:
-365.59375: 0xC3B6CC00