因爲掩藏的事沒有不顯出來的;隱瞞的事沒有不露出來被人知道的。
——路加福音【8:17】
一、說明
1.本文爲各傳感器合理範圍內的數值(DATA)提供數據表示方案。
2.數據由四個字節組成,能夠表示正負數、範圍內的單精度浮點數。
3.取值範圍:
4.最接近於零的值:
5.有效精度爲0.0005。由於採用IEEE754表示的數據,當表示較大數據時有效精度偏大,故不採用IEEE754標準的數據表示方法。
6.本文中的十六進制數值總稱統一使用DATA表示。
二、標準數據格式
1.格式說明
★DATA共計32位(4字節)
★31位是符號位,1表示該數爲負,0表示該數爲負
★30~26位一共5位是 指數位(-16~15)
★25~0位一共26位是尾數位,尾數的編碼爲原碼
從邏輯上用三元組{S,E,M}來表示一個數N:
2.數據表示
◆表達式:
◆說明:
n,s,e,m分別爲N,S,E,M對應的實際數值,而N,S,E,M僅僅是一串二進制位。
★ S(sign)表示N的符號位。對應值s滿足:n>0時,s=0; n<0時,s=1。
★ E(exponent)表示N的指數位,位於S和M之間的若干位。對應值e值也可正可負。
★ M(mantissa)表示N的尾數位,包含數據的整數部分和小數部分,根據指數位進行區分。
3.計算方法
☆s的取值爲0或1;
☆m包含的位數爲26個bit位;
☆隱含位:表達式中 1.m 中小數點左邊的那一位被稱作隱含位,隱含位大多數情況下爲1,只有當E爲0的情況下爲0。
☆本算法的偏置量爲16。
☆e的值計算方式:
當E∈(0,25-1]時,e=E-16,例E=10101,所以e=22-16=6;
當E=0時,e=1-16;
依據隱含位和E值的處理能夠實現大於1和小於1的正數之間的平滑過度。
三、數據轉化用例
1.特殊用例
表示最大正數
二進制:0111 1111 1111 1111 1111 1111 1111 1111
十六進制:7F FF FF FF
計算過程:
s=0
e=(11111)2-(16)10=15
m=(11 1111 1111 1111 1111 1111 1111)2
∴N = (-1)0*(1.11 1111 1111 1111 1111 1111 1111)2*215
= 216-(1/2)11= 65535.99951171875
表示的值爲:65535.99951171875
表示最小負數
二進制:1111 1111 1111 1111 1111 1111 1111 1111
十六進制:FF FF FF FF
計算過程:
s=1
e=(11111)2-(16)10=15
m=(11 1111 1111 1111 1111 1111 1111)2
∴N = (-1)1*(1.11 1111 1111 1111 1111 1111 1111)2*215
= -216+(1/2)11= -65535.99951171875
表示的值爲:-65535.99951171875
表示最接近於0的正數
二進制:0000 0000 0000 0000 0000 0000 0000 0001
十六進制:00 00 00 01
計算過程:
s=0
e=(1)10-(16)10= -15
m=(00 0000 0000 0000 0000 0000 0001)2
∴N = (-1)0*(0.00 0000 0000 0000 0000 0000 0001)2*2-15
= 2-41 = 4.5474735088646411895751953125*10-13
表示的值爲:4.5474735088646411895751953125*10-13
表示最接近於0的負數
二進制:1000 0000 0000 0000 0000 0000 0000 0001
十六進制:80 00 00 01
計算過程:
s=1
e=(1)10-(16)10= -15
m=(00 0000 0000 0000 0000 0000 0001)2
∴N = (-1)1*(0.00 0000 0000 0000 0000 0000 0001)2*2-15
= -2-41 = -4.5474735088646411895751953125*10-13
表示的值爲:-4.5474735088646411895751953125*10-13
兩種方式表示的過渡值
二進制:0000 0011 1111 1111 1111 1111 1111 1111
十六進制:03 FF FF FF
計算過程:
s=0
e=(1)10-(16)10= -15
m=(11 1111 1111 1111 1111 1111 1111)2
∴N = (-1)0*(0.11 1111 1111 1111 1111 1111 1111)2*2-15
= (1-2-26) *2-15= 3.051757767025264911353588104248*10-5
表示的值爲:3.051757767025264911353588104248*10-5
二進制:0000 0111 1111 1111 1111 1111 1111 1111
十六進制:07 FF FF FF
計算過程:
s=0
e=(000 01)2-(16)10= -15
m=(11 1111 1111 1111 1111 1111 1111)2
∴N = (-1)0*(1.11 1111 1111 1111 1111 1111 1111)2*2-15
= (2-2-26) *2-15= 6.103515579525264911353588104248*10-5
表示的值爲:6.103515579525264911353588104248*10-5
1的表示
二進制:0100 0000 0000 0000 0000 0000 0000 0000
十六進制:40 00 00 00
計算過程:
s=0
e=(100 00)10-(16)10= 0
m=(00 0000 0000 0000 0000 0000 0000)2
∴N = (-1)0*(1.00 0000 0000 0000 0000 0000 0000)2*20
= 1
表示的值爲:1
2.典型用例
①十進制數:1234.5678
計算過程:
1234.5678 = 210+27+26+24+21+2-1+2-4+2-8+2-10+2-12+2-13+2-15+2-16
≈1234.5677947998046875
s=0
e=10,E=10+16=(26)10=(11010)2
m=10011010010.1001000101011011,M=00 1101 0010 1001 0001 0101 1011
二進制數:0110 1000 1101 0010 1001 0001 0101 1011
十六進制數:68 D2 91 5B
②十進制數:37.61
計算過程:
37.61 = 25+22+20+2-1+2-4+2-5+2-6+2-11+2-13+2-17+2-18+2-19+2-20
≈37.60999965667724609375
s=0
e=5,E=5+16=(21)10=(10101)2
m=100101.100111000010100011110,M=00 1011 0011 1000 0101 0001 1110
二進制數:0101 0100 1011 0011 1000 0101 0001 1110
十六進制數:54 B3 85 1E
③十進制數:-99.3745
計算過程:
99.3745 = 26+25+21+20+2-2+2-4+2-5+2-6+2-7+2-8+2-9+2-10+2-12+2-13+2-14+2-15+2-16+2-19+2-20
≈99.37449932098388671875
s=1
e=6,E=6+16=(22)10=(10110)2
m=1100011.01011111110111110011,M=10 0011 0101 1111 1101 1111 0011
二進制數:1101 1010 0011 0101 1111 1101 1111 0011
十六進制數:DA 35 FD F3
④十進制數:-8.875
計算過程:
8.875 = 23+2-1+2-2+2-3
s=1
e=3,E=3+16=(19)10=(10011)2
m=1000.11100000000000000000000,M=00 0111 0000 0000 0000 0000 0000
二進制數:1100 1100 0111 0000 0000 0000 0000 0000
十六進制數:CC 70 00 00