FPGA 学习小组
直播中

姜钰

7年用户 192经验值
私信 关注

单精度二进制数表示

题目:Show the IEEE754 binary representation for the floating-point number (10.5)10 in single precision.

单精度存储格式
1 符号位S(sign) - 1bit0代表正号,1代表负号

2 指数位E(exponent) - 8bitE的取值范围为0-255(无符号整数),实际数值e=E-127。
3 尾数位M(mantissa) - 23bit
M也叫有效数字位(significant)、系数位(coefficient), 甚至被称作“小数”。在一般情况下,m=(1.M)2,使得实际起作用范围为1≤尾数<2。


实际例子
对于内部存储数据(00111111 01100110 01100110 01100110)2:符号位(最左侧)S=0。这表示是个正数指数(左侧第2-9位)E=(01111110)2=(126)10,所以e=E-127=-1。尾数(最后的23位)M=(1100110 01100110 01100110)2,m=(1.M)2=(1.7999999523162841796875)10该二进制小数转为10进制的计算方式为1 + (1/2+1/4) + (1/32+1/64) + (1/512+1/1024)……实际值N=1.7999999523162841796875*2^-1=0.89999997615814208984375


十进制转二进制

2.025675                                    
(1)整数部分2,二进制为10
         小数部分0.025675, 二进制是.0000 0110 1001 0010 1010 01
       连起来是10.0000 0110 1001 0010 1010 01,这部分是有效数字。
         所以尾数为: 0000 0011 0100 1001 0101 001(23位)
(2)把小数点移到第一个1的后面,左移了1位, 加上偏移量127:127+1=128,二进制是10000000,这是指数部分。
(3)2.025675是正数,所以符号位是0。把符号位,指数和尾数连起来:
          0 10000000 00000011010010010101001
         把这32位按8位一节整理一下,得:
         0100 0000 0000 0001 1010 0100 1010 1001
        十六进制表示为 4001A4A9

10.5                                    
(1)整数部分10,二进制为1010
         小数部分0.5, 二进制是.1
       连起来是1010.1,这部分是有效数字。
         所以尾数为: 0101 0000 0000 0000 0000 000(23位)
(2)把小数点移到第一个1的后面,左移了3位, 加上偏移量127:127+3=130,二进制是10000010,这是指数部分。
(3)10.5是正数,所以符号位是0。把符号位,指数和尾数连起来:
          0 10000010 01010000000000000000000
         把这32位按8位一节整理一下,得:
         0100 0001 0010 1000 0000 0000 0000 0000
        十六进制表示为 41280000




更多回帖

发帖
×
20
完善资料,
赚取积分