题目: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
|