怎样把十进制表示成浮点规范化数?

如题所述

例题1: —12.5

1. 整数部分12,二进制为1100; 小数部分0.5, 二进制是.1,先把他们连起来,从第一个1数起取24位(后面补0):
1100.10000000000000000000
这部分是有效数字。(把小数点前后两部分连起来再取掉头前的1,就是尾数)
2. 把小数点移到第一个1的后面,需要左移3位, 加上偏移量127(实际偏移的位数加上偏移量127):127+3=130,二进制是10000010,这是阶码。
3. -12.5是负数,所以符号位是1。把符号位,阶码和尾数连起来。注意,尾数的第一位总是1,所以规定不存这一位的1,只取后23位:
1 10000010 10010000000000000000000
把这32位按8位一节整理一下,得:
11000001 01001000 00000000 00000000
就是十六进制的 C1480000.

练习:(-38.57)十进制=(-10 0110. 1001 0001 1110 1…)二进制

=(-1. 0011 0100 1000 1111 01…)二进制×25

=(1 10000100 00110100100011110101110)单精度浮点数

例题2: 2.025675
1. 整数部分2,二进制为10; 小数部分0.025675, 二进制是.0000011010010010101001,先把他们连起来,从第一个1数起取24位(后面补0):
10.0000011010010010101001
这部分是有效数字。把小数点前后两部分连起来再取掉头前的1,就是尾数: 00000011010010010101001
2. 把小数点移到第一个1的后面,左移了1位, 加上偏移量127:127+1=128,二进制是10000000,这是阶码。
3. 2.025675是正数,所以符号位是0。把符号位,阶码和尾数连起来:
0 10000000 00000011010010010101001
把这32位按8位一节整理一下,得:
01000000 00000001 10100100 10101001
就是十六进制的 4001A4A9.

练习:(69.34)十进制=(0100 0101. 0101 0111 0001 0100…)二进制

=(1. 0001 0101 0101 1100 0101 00)二进制 ×26

=(0 10000101 00010101010111000101000)单精度浮点数

注意:如果只有小数部分,那么需要右移小数点. 比如右移3位才能放到第一个1的后面, 阶码就是127-3=124.

补充:浮点二进制数手工转换成十进制数的例子:
假设浮点二进制数是 1011 1101 0100 0000 0000 0000 0000 0000
按1,8,23位分成三段:
1 01111010 10000000000000000000000
最后一段是尾数。前面加上"1.", 就是 1.10000000000000000000000
下面确定小数点位置。阶码是01111010,加上00000101才是01111111(127),
所以他减去127的偏移量得-5。(或者化成十进制得122,122-127=-5)。
因此尾数1.10(后面的0不写了)是小数点右移5位的结果。要复原它就要左移5位小数点,得0.0000110, 即十进制的0.046875
最后是符号:1代表负数,所以最后的结果是 -0.046875。
温馨提示:内容为网友见解,仅供参考
无其他回答

怎样把十进制表示成浮点规范化数。。
1. 整数部分12,二进制为1100; 小数部分0.5, 二进制是.1,先把他们连起来,从第一个1数起取24位(后面补0):1100.10000000000000000000 这部分是有效数字。(把小数点前后两部分连起来再取掉头前的1,就是尾数)2. 把小数点移到第一个1的后面,需要左移3位, 加上偏移量127(实际偏移的位数...

十进制数表示成二进制浮点规格化数
如果m的第一位是非0整数,m称作规格化的。有一些描述使用一个单独的符号位(s 代表+或者-)来表示正负,这样m必须是正的。当尾数用二进制数表示时,浮点规格化数定义尾数S应满足下面关系:(I)对于正数,S应大于等于1\/2,小于1,用二进制数表示为:S=0.1***…(其中*为0或1)(II)对于负数,如果尾数...

将十进制数-27\/64表示成IEEE754标准的32位浮点规格化数
步骤:第一,先转换为二进制数,第二,转化为规格化数,第三,按1 8 23 转化 27\/64=0.421875用二进制数表示为 0.011011 = 1.1011 × e^(-2)E=e+127=125 用二进制数表示为 01111101 M=1011 S=0 SEM 即 : 0 01111101 10110000000000000000000 扩展例子:将十进制数11.375表示为754...

13.将十进制数-0.421875转换成IEEE-754标准的32位浮点规格化数(用十 ...
首先分别将十进制数转换成二进制数:(-0.421875)10=-0.011011然后移动小数点,使其在第1,2位之间-0.011011=-1.1011×2-2e=-2于是得到:S=1,E=-2+127=125,M=1011最后得到32位浮点数的二进制存储格式为:1 011 1110 1 101 1000 0000 00000000 0000 = (BED80000)16 ...

vs2015怎么把e浮点表示法改成标准小数点表示法
十进制表示成浮点规范化数方法: 对于数n,先化成n=((-1)^s)*(1.x)*(2^k),对于0、无穷等特殊数在浮点数里由特殊的格式表示。然后把s、x、k就填到相应位置就可以了。例如12=((-1)^0)*(1.5)*(2^3),那么s=0,x=5,k=3。

如何将十进制转换成32位浮点数?
根据 IEEE 754 标准,32 位浮点数采用以下格式:符号位(1 位)+ 指数位(8 位)+ 尾数位(23 位)其中,符号位表示数的正负,指数位表示数的数量级大小,尾数位表示数的精度。对于给定的十进制数 178.125,可以按照以下步骤将其转换为 IEEE 754 标准的 32 位浮点表示:1. 将该数转换为二进制...

将十进制数(24\/512)表示成浮点规格化数,要求阶码4位(含符号),移码表示...
1:先将十进制化为二进制为:0.000011000 2:尾数6位用补码表示要知道它形式有两种 0.1…… 或 1.0……得 0.11000✘2^0100(2的0100次方)3:因题目要求用阶码所以 X(原)=X(补)=0100 得X(移)=1100 所以最终结果为 0.11000✘2^1100 ...

浮点数规格化
例如十进制数50.265化为32位规格化浮点数:A=50.265,则Z=ln50.265\/ln2,P=int(Z),故P=5; X=A\/2P=50.265\/25=1.57078125,将0.57078125化为23位二进制小数,即是BY0 BY1 BY2,在最高位添上十进制数的符号位S(因十进制数为正数,故S=0);而eb=P+7FH,所以,十进制数50.265的...

将十进制数写成二进制定点数和浮点数
二进制转换成:x=-110110 定点数表示成:x=-0000110110 浮点数表示成:X=-(0.1101100000)*2的110次方 浮点机中:[x]原=0,0110;1.1101100000 [x]补=0,0110;1.0010100000 [x]反=0,0110;1.0010011111 十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数...

十进制小数转换为浮点数
1、首先,十进制转二进制:整数部分 除二余数倒写:12: 12\/2=6 余0 ;6\/2=3 余0 ;3\/2=1 余1 ;1\/2=0 余1 倒写 也就是:1100 小数部分 乘二取整顺写:0.5: 0.5×2=1.0 取整 也就是:1 12.5的二进制:1100.1 2、然后将二进制转化为浮点数:由于12.5为正数...

相似回答