十进制数与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


版权声明:本文为qq_41629142原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。