十进制数与IEEE 754 32 位转换实例讲解

这里用了一下《深入理解计算机系统》中的几个习题来具体说明了一下

主要分为以下几个步骤:

1、转换为二进制

2、写为IEEE 754表达格式

3、求尾数、阶码、符号位

4、机器码以及十六进制表示

+1.75:

二进制表示:+1.11

IEEE 754表达形式:(-1)^s X 1.f X 2^(e-127),

s = 0(符号位)

1.f = 1.110000..00(尾数)

e-127 =0,e=127=0111 1111 (阶码)

符号:正数为0

十六进制:3FE00000H

0

0

1

1

1

1

1

1

1

1

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

+19:

二进制表示:+0001 0011

IEEE 754表达形式:(-1)^s X 1.f X 2^(e-127),

s = 0(符号位)

1.f = 1.0011..00(尾数)

e-127 =4,e=131=1000 0011 (阶码)

符号:正数为0

十六进制:41980000H

0

1

0

0

0

0

0

1

1

0

0

1

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

-1/8:

二进制表示:-0.001

IEEE 754表达形式:(-1)^s X 1.f X 2^(e-127),

s = 1(符号位)

1.f =1. 000..00(尾数)

e-127 =-3,e=124=0111 1100 (阶码)

符号:负数为1

十六进制:BE000000H

1

0

1

1

1

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

258:

二进制表示:+1 0000 0010

IEEE 754表达形式:(-1)^s X 1.f X 2^(e-127),

s = 0(符号位)

1.f = 1.0000 0010..00(尾数)

e-127 =8,e=135=1000 0111 (阶码)

符号:正数为0

十六进制:43810000H

0

1

0

0

0

0

1

1

1

0

0

0

0

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

利用IEEE 754标准求下列加减法:

1)0.75 + (-65.25)

2)0.75 - (-65.25)

设 X = +0.75, Y =-65.25

[X]2 = +0.1100

机器码表示为:0 0111 1110 1000 ...00

则阶码EX= 0111 1110

[Y]2 =- 1000 001.01

机器码表示为:1 1000 0101 0000 0101 0000...00

则阶码EY= 1000 0101

  1. 对阶后

在进行对阶的时候:EX= 0111 1110 EY= 1000 0101

[EX- EY]补 = 0111 1110 + 0111 1011 (mod 256)= 1111 1001 (mod 256) = (-7)10 

所以X的尾数需要右移7位,对阶后X的阶码移码为 1000 0101,故实际阶码也即尾数操作后需要右移的位数为:1000 0101 - 0111 1111 = 0000 0110 = 6。

  1. 尾数加减
  • 相加:-1.00000010 X 2^6 = (-64.50)10
  • 相减: +1.00001000 X2^6 = (66.00)10
  1. 尾数的舍入处理

尾数没有舍入

  1. 阶码溢出判断

两次均没有出现阶码溢出的情况。

所以结果为:

-64.50和66.00

  • 8
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
IEEE 754 是一种二进制浮点表示法,它将一个浮点表示为三个部分:符号、指和尾。下面是将十进制转换IEEE 754 标准的步骤: 1. 确定符号:将的符号存储在一个单独的比特中。0 表示,1 表示。 2. 将的绝对值转换为二进制:将整部分和小部分分别转换为二进制,并将它们组合起来。例如,将十进制 3.75 转换为二进制的方式如下: 整部分:3 ÷ 2 = 1 余 1 1 ÷ 2 = 0 余 1 小部分:0.75 × 2 = 1.5 取整部分 1 0.5 × 2 = 1 取整部分 1 0 组合起来得到二进制:11.11 3. 规格化二进制:将二进制规格化为形如 1.xxxxxx 的形式,其中第一为 1,后面是小部分的二进制。这个过程涉及到移动小点,同时增加指的值,直到小点移到第一为止。例如,将上面的二进制规格化为如下形式: 11.11 = 1.111 × 2^1 4. 确定指:将规格化后的二进制中小点前面的 1 后面的减去 1,得到指的值。例如,上面规格化后的二进制中小点前面的 1 后面有 3 ,因此指为 3-1=2。 5. 将指转换为二进制:将指加上一个偏移量,得到无符号整的值。偏移量的值是 2^(k-1)-1,其中 k 是指。例如,如果指有 8 ,则偏移量为 127。 指值为 2,加上偏移量 127,得到无符号整值为 129。 将 129 转换为二进制:129 ÷ 2 = 64 余 1 64 ÷ 2 = 32 余 0 32 ÷ 2 = 16 余 0 16 ÷ 2 = 8 余 0 8 ÷ 2 = 4 余 0 4 ÷ 2 = 2 余 0 2 ÷ 2 = 1 余 0 1 ÷ 2 = 0 余 1 得到二进制10000001 6. 组合符号、指和尾:将符号、指和尾组合起来,得到 IEEE 754 标准的二进制表示。在单精度浮点中,符号占据第一,指占据接下来的 8 ,尾占据接下来的 23 。例如,将上面转换后的二进制组合起来得到 IEEE 754 标准的二进制表示: 0 10000001 11100000000000000000000 如果需要将这个二进制转换为十六进制,可以将每个 4 二进制转换为一个十六进制字,得到以下十六进制表示: 0x41E00000
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值