一種基于新短浮點型數(shù)據(jù)的數(shù)據(jù)轉(zhuǎn)換方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明設(shè)及數(shù)據(jù)處理技術(shù)領(lǐng)域,尤其是一種基于新短浮點型數(shù)據(jù)的數(shù)據(jù)轉(zhuǎn)換方 法。
【背景技術(shù)】
[0002] 隨著社會的日益發(fā)展,由科學(xué)研究、社交網(wǎng)絡(luò)、自然環(huán)境監(jiān)測等產(chǎn)生的數(shù)W億計的 數(shù)據(jù)呈爆炸式增長,無論在工業(yè)界還是學(xué)術(shù)界,大規(guī)模數(shù)據(jù)處理都受到火熱追捧。數(shù)據(jù)的多 樣性和指數(shù)級增長給數(shù)據(jù)存儲和傳輸帶來了巨大壓力,嚴(yán)重阻礙了高性能計算在科學(xué)領(lǐng)域 的運用和發(fā)展。
[0003] 浮點數(shù)在計算機(jī)系統(tǒng)中是普遍存在的(從PC到超級計算機(jī)都廣泛存在)。幾乎每種 計算機(jī)語言都有浮點數(shù)型數(shù)據(jù)。浮點數(shù)型數(shù)據(jù)的通用標(biāo)準(zhǔn)是IEEE754標(biāo)準(zhǔn)。IEEE754標(biāo)準(zhǔn)在 表示浮點數(shù)時,每個浮點數(shù)均由立部分組成:符號位S (sign),指數(shù)部分E (exponent,也稱 為階碼部分)和尾數(shù)部分M (mantissa)。
[0004] I邸E754標(biāo)準(zhǔn)的浮點數(shù)一般采用W下四種基本格式: (1)單精度格式他位):除去符號位1位后,E占8位,M占23位。
[0005] (2)擴(kuò)展單精度格式:E〉=ll位,M〉31位。
[0006] (3)雙精度格式:(64 位);E=11 位,M=52 位。
[0007] (4)擴(kuò)展雙精度格式:E〉=15位,M〉63位。
[000引數(shù)據(jù)的轉(zhuǎn)換方式包括數(shù)據(jù)壓縮、解壓縮、存儲與傳輸?shù)?。對浮點型數(shù)據(jù)來說,數(shù)據(jù) 的總位數(shù)決定了數(shù)據(jù)轉(zhuǎn)換的效率。目前IEEE754標(biāo)準(zhǔn)的四種浮點型數(shù)據(jù)的總位數(shù)至少為32 位,若能采用總位數(shù)少于32位的數(shù)據(jù)格式來表示浮點型數(shù)據(jù),將會進(jìn)一步加快數(shù)據(jù)轉(zhuǎn)換的 速度和效率,降低數(shù)據(jù)存儲量和傳輸成本,運對于追求更高壓縮效率的有損壓縮(有損壓縮 指的是解壓縮時不能精確恢復(fù)原始數(shù)據(jù),有一定的信息損失,該方法主要用于圖像、視頻、 音頻等少量信息遺失而不會影響原有數(shù)據(jù)效果的領(lǐng)域)來說,顯得尤為重要。
【發(fā)明內(nèi)容】
[0009] 為解決上述技術(shù)問題,本發(fā)明的目的在于:提供一種轉(zhuǎn)換速度快、效率高、存儲量 少和傳輸成本低的,基于新短浮點型數(shù)據(jù)的數(shù)據(jù)轉(zhuǎn)換方法。
[0010] 本發(fā)明所采取的技術(shù)方案是: 一種基于新短浮點型數(shù)據(jù)的數(shù)據(jù)轉(zhuǎn)換方法,包括: A、 確定數(shù)據(jù)轉(zhuǎn)換的變換形式及所采用的變換算法,所述數(shù)據(jù)轉(zhuǎn)換的變換形式包括但不 限于壓縮、解壓縮、存儲和傳輸; B、 根據(jù)確定的變換形式采用相應(yīng)的變換算法將新短浮點型數(shù)據(jù)轉(zhuǎn)換為其它浮點型數(shù) 據(jù)或?qū)⑵渌↑c型數(shù)據(jù)轉(zhuǎn)換為新短浮點型數(shù)據(jù),所述新短浮點型數(shù)據(jù)為8位短浮點型數(shù)據(jù) 或16位短浮點型數(shù)據(jù)。
[0011] 進(jìn)一步,所述8位短浮點型數(shù)據(jù)的數(shù)據(jù)格式為:符號位為1位,階碼部分共4位,尾數(shù) 部分共3位;若階碼為O且尾數(shù)為O,則運個數(shù)的值為± O;若階碼為255且尾數(shù)為O,則運個數(shù) 為無窮數(shù);階碼為255且尾數(shù)不為O,則運個數(shù)表示非法數(shù);負(fù)數(shù)的表示范圍為[-416,-1.953 X10-3],正數(shù)的表示范圍為[1.953 X 10-3,416];相對誤差小于等于6.22%。
[0012] 進(jìn)一步,所述16位短浮點型數(shù)據(jù)的數(shù)據(jù)格式為:符號位為1位,階碼部分共8位,尾 數(shù)部分共7位;若階碼為0且尾數(shù)為0,則運個數(shù)的值為± 0;若階碼為15且尾數(shù)為0,則運個數(shù) 為無窮數(shù);階碼為15且尾數(shù)不為0,則運個數(shù)表示非法數(shù);負(fù)數(shù)的表示范圍為[-3. Ol X IO38, -1.401298 X 10-45],正數(shù)的表示范圍為[1.401298 X 10-45,3.Ol X 1038];相對誤差小于 等于1.05%。
[0013] 進(jìn)一步,所述其它浮點型數(shù)據(jù)為IEEE754標(biāo)準(zhǔn)的單精度浮點型數(shù)據(jù)或雙精度浮點 型數(shù)據(jù)。
[0014] 進(jìn)一步,所述步驟B中將單精度浮點型數(shù)據(jù)轉(zhuǎn)換為8位短浮點型數(shù)據(jù)或16位短浮點 型數(shù)據(jù)運一步驟,其包括: B11、將浮點型數(shù)據(jù)按照整型的數(shù)據(jù)格式進(jìn)行逐位讀取; B12、利用位運算,分別獲取單精度浮點型數(shù)據(jù)的符號位、階碼W及尾數(shù)部分; B13、通過移位W及截取運算,獲得單精度浮點型數(shù)據(jù)中階碼W及尾數(shù)部分壓縮后的 值; B14、采用位或運算將單精度浮點型數(shù)據(jù)的符號位、階碼W及尾數(shù)部分壓縮后的值合并 為8位短浮點型數(shù)據(jù)或16位短浮點型數(shù)據(jù)。
[0015] 進(jìn)一步,所述步驟B中8位短浮點型數(shù)據(jù)轉(zhuǎn)換為單精度浮點型數(shù)據(jù)運一步驟,其包 括: B21、按壓縮時的數(shù)據(jù)格式從8位短浮點型數(shù)據(jù)中截取符號位S,階碼部分E和尾數(shù)部分 M; B22、按IEEE754標(biāo)準(zhǔn)的數(shù)據(jù)格式,對單精度浮點型數(shù)據(jù)進(jìn)行回填,所述對單精度浮點型 數(shù)據(jù)進(jìn)行回填運一步驟包括: 將符號位S直接填充至單精度浮點型數(shù)據(jù)首字節(jié)位的第0位; 將尾數(shù)部分M填入單精度浮點型數(shù)據(jù)的第9位至第11位,并往單精度浮點型數(shù)據(jù)的第12 位至第31位填0; 根據(jù)階碼部分E計算解壓后的階碼E',然后將E'的值填入單精度浮點型數(shù)據(jù)的第1位 至第 8 位中,其中,當(dāng) E=O 時,E'=0;當(dāng)1 < E < 254時,E'= E + 120;當(dāng) E=255 時,E'=255。
[0016] 其中,本發(fā)明8位短浮點型數(shù)據(jù)的解壓縮方法中對無窮(INF) W及非法數(shù)(化N)的 處理方法與IEEE754所定義的方法有所不同,能更加充分地利用存儲空間。
[0017] 進(jìn)一步,所述步驟B中將16位短浮點型數(shù)據(jù)轉(zhuǎn)換為單精度浮點型數(shù)據(jù)運一步驟,其 包括: B31、按壓縮時的數(shù)據(jù)格式從16位短浮點型數(shù)據(jù)中截取符號位S,階碼E和尾數(shù)M; B32、按照IEEE754標(biāo)準(zhǔn)的數(shù)據(jù)格式,對單精度浮點型數(shù)據(jù)進(jìn)行回填,所述對單精度浮點 型數(shù)據(jù)進(jìn)行回填運一步驟包括: 將符號位S直接填充至單精度浮點型數(shù)據(jù)首字節(jié)位的第0位; 將尾數(shù)部分M填入單精度浮點型數(shù)據(jù)的第9位至第15位,并往單精度浮點型數(shù)據(jù)的第16 位至第31位填0; 根據(jù)階碼部分E計算解壓后的階碼E',然后將E'的值填入單精度浮點型數(shù)據(jù)的第I位 至第8位中,其中,E' = E。
[0018] 進(jìn)一步,所述步驟B中將8位短浮點型數(shù)據(jù)轉(zhuǎn)換為雙精度浮點型數(shù)據(jù)運一步驟,其 具體為: 先將8位短浮點型數(shù)據(jù)轉(zhuǎn)換為單精度浮點型數(shù)據(jù),然后通過強(qiáng)制轉(zhuǎn)換將單精度浮點型 數(shù)據(jù)直接轉(zhuǎn)換為雙精度浮點型數(shù)據(jù); 或者先從8位短浮點型數(shù)據(jù)中截取符號位S、階碼部分E和尾數(shù)部分M,然后按照IEEE754 標(biāo)準(zhǔn)的數(shù)據(jù)格式,對雙精度浮點型數(shù)據(jù)進(jìn)行回填,得到轉(zhuǎn)換后的雙精度浮點型數(shù)據(jù),所述對 雙精度浮點型數(shù)據(jù)進(jìn)行回填運一步驟包括: 將符號位S直接填充至單精度浮點型數(shù)據(jù)首字節(jié)位的第0位; 將尾數(shù)部分M填入單精度浮點型數(shù)據(jù)的第12位至第14位,并往雙精度浮點型數(shù)據(jù)的第 15位至第63位填0; 根據(jù)階碼部分E計算解壓后的階碼E',然后將E'的值填入雙精度浮點型數(shù)據(jù)的第1位 至第 11 位中,其中,當(dāng)E=O時,E'=0;當(dāng)1 < E < 254時,E'= E + 120;當(dāng)E=255時,E' = 255。
[0019] 進(jìn)一步,若需要將單精度浮點型數(shù)據(jù)轉(zhuǎn)換為8位短浮點型數(shù)據(jù),則采用轉(zhuǎn)換公式y(tǒng)= f8(X)或y=f8ex(X)將單精度浮點型數(shù)據(jù)X轉(zhuǎn)化為8位短浮點型數(shù)據(jù)y;若需要將單精度浮點 型數(shù)據(jù)轉(zhuǎn)換為16位短浮點型數(shù)據(jù),則采用轉(zhuǎn)換公式y(tǒng)=fl6(X)或y=fl6ex(X)將單精度浮點型 數(shù)據(jù)X轉(zhuǎn)化為16位短浮點型數(shù)據(jù)y,其中,函數(shù)f8(x)和函數(shù)fi6(x)分別為8位短浮點型數(shù)據(jù)和 16位短浮點型數(shù)據(jù)的普通版本轉(zhuǎn)換函數(shù),函數(shù)fSexU)和函數(shù)f ISex(X)分別為8位短浮點型數(shù) 據(jù)和16位短浮點型數(shù)據(jù)的精確版本轉(zhuǎn)換函數(shù);函數(shù)f8(x)只根據(jù)單精度浮點型數(shù)據(jù)X的第9 位至第11位來確定8位短浮點型數(shù)據(jù)y的尾數(shù),而函數(shù)fsexU)則根據(jù)數(shù)據(jù)X的第9位和第10位 來確定數(shù)據(jù)y尾數(shù)的前2位并根據(jù)數(shù)據(jù)X的第11位和第12位來確定數(shù)據(jù)y尾數(shù)的最后1位;函 數(shù)fi6(x)只根據(jù)單精度浮點型數(shù)據(jù)X的第9位至第15位來確定8位短浮點型數(shù)據(jù)y的尾數(shù),而 函數(shù)fi6ex(x)則根據(jù)數(shù)據(jù)X的第9位至第14位來確定數(shù)據(jù)y尾數(shù)的前6位并根據(jù)數(shù)據(jù)X的第15 位和第16位來確定數(shù)據(jù)y尾數(shù)的最后1位。
[0020] 進(jìn)一步,所述步驟B在通過壓縮轉(zhuǎn)換算法將其它浮點型數(shù)據(jù)轉(zhuǎn)換為新短浮點型數(shù) 據(jù)時還包括W下步驟: 對新短浮點型數(shù)據(jù)進(jìn)行二進(jìn)制格式緊湊存儲,生成二進(jìn)制數(shù)據(jù)文件; 登記二進(jìn)制數(shù)據(jù)文件的壓縮標(biāo)記。
[0021] 本發(fā)明的有益效果是:采用了 8位短浮點型數(shù)據(jù)或16位短浮點型數(shù)據(jù)來進(jìn)行數(shù)據(jù) 轉(zhuǎn)換,與IEEE754標(biāo)準(zhǔn)的浮點型數(shù)據(jù)相比,總位數(shù)更少,進(jìn)一步加快了數(shù)據(jù)轉(zhuǎn)換的速度和效 率,降低數(shù)據(jù)存儲量和傳輸成本,具有壓縮率高和存儲量小的優(yōu)勢,尤其適用于數(shù)據(jù)的有損 壓縮存儲與傳輸。進(jìn)一步,8位短浮點型數(shù)據(jù)的表示范圍為[-416,416],相對誤差小于等于 6.22%;而16位短浮點型數(shù)據(jù)的表示范圍為[-3.Ol X 1038,3.Ol XlO38L相對誤差小于等 于1.05%,使得新短浮點型數(shù)據(jù)在同等的存儲空間條件下具有更大的表示范圍和更高的精 度。進(jìn)一步,將單精度浮點型數(shù)據(jù)轉(zhuǎn)換為8位短浮點型數(shù)據(jù)或16位短浮點型數(shù)據(jù)時,能采用 精確版本轉(zhuǎn)換函數(shù)來進(jìn)行壓縮轉(zhuǎn)換