數據格式,計算機中數據格式詳細介紹
數據格式,計算機中數據格式詳細介紹
計算機中常用的數據表示格式有兩種,一是定點格式,二是浮點格式。一般來說,定點格式容許的數值范圍有限,但要求的處理硬件比較簡單。而浮點格式容許的數值范圍很大,但要求的處理硬件比較復雜。
1.定點數的表示方法
定點表示:約定機器中所有數據的小數點位置是固定不變的。由于約定在固定的位置,小數點就不再使用記號“.”來表示。通常將數據表示成純小數或純整數。
定點數x=x0x1x2…xn 在定點機中表示如下(x0:符號位,0代表正號,1代表負號):
?
純小數的表示范圍為(x0x1x2…xn 各位均為0時最小;各位均為1時最大)
0≤|x|≤1-2-n (2.1)
純整數的表示范圍為
0≤|x|≤2n-1 ? (2.2)
目前計算機中多采用定點純整數表示,因此將定點數表示的運算簡稱為整數運算。
2.浮點數的表示方法
電子的質量(9×10-28克)和太陽的質量(2×1033克)相差甚遠,在定點計算機中無法直接來表示這個數值范圍.要使它們送入定點計算機進行某種運算,必須對它們分別取不同的比例因子,使其數值部分絕對值小于1,即:
9×10-28=0.9×10-27
2×1033=0.2×1034
這里的比例因子10-27 和1034要分別存放在機器的某個存儲單元中,以便以后對計算結果按這個比例增大。顯然這要占用一定的存儲空間和運算時間。因此得到浮點表示法如下:
浮點表示法:把一個數的有效數字和數的范圍在計算機的一個存儲單元中分別予以表示,這種把數的范圍和精度分別表示的方法,數的小數點位置隨比例因子的不同而在一定范圍內自由浮動。
任意一個十進制數N可以寫成:
N = 10E.M (2.3)
同樣,在計算機中一個任意進制數N可以寫成
N=Re.M ? (2.4)
M:尾數,是一個純小數。
e:比例因子的指數,稱為浮點數的指數,是一個整數。
R:比例因子的基數,對于二進計數值的機器是一個常數,一般規定R為2,8或16。
一個機器浮點數由階碼和尾數及其符號位組成(尾數:用定點小數表示,給出有效數字的位數決定了浮點數的表示精度;階碼:用整數形式表示,指明小數點在數據中的位置,決定了浮點數的表示范圍。):
為便于軟件移植,按照 IEEE754 標準,32位浮點數和64位浮點數的標準格式為:
32位的浮點數中,S:浮點數的符號位,1 位,0表示正數,1表示負數。M:尾數,23位,用小數表示,小數點放在尾數域的最前面。E:階碼(8位),階符采用隱含方式,即采用移碼方式來表示正負指數。移碼方法對兩個指數大小的比較和對階操作都比較方便,因為階碼域值大者其指數值也大。采用這種方式時,將浮點數的指數真值e 變成階碼E時,應將指數e加上一個固定的偏移值127(01111111),即E=e+127。
IEEE754 標準中,一個規格化的32位浮點數x的真值可表示為
x=(-1)s×(1.M)×2E-127 e=E-127 (2.5)
一個規格化的64位浮點數x的真值為
x=(-1)s×(1.M)×2E-1023 e=E-1023 ?(2.6)
同一個浮點數的表示方法不是唯一的,如:
(1.75)10=1.11×20???????????(IEEE規格化表示)
=0.111×21??????????????????(傳統規格化表示)
=0.0111×22
=0.00111×23
為提高數據的表示精度,當尾數的值不為 0 時,尾數域的最高有效位應為1,否則以修改階碼同時左右移小數點的辦法,使其變成這一表示形式,這稱為浮點數的規格化表示。
當浮點數的尾數為0,不論其階碼為何值,或者當階碼的值遇到比它能表示的最小值還小時,不管其尾數為何值,計算機都把該浮點數看成零值,稱為機器零。
當階碼E 為全0且尾數M也為全0時,表示的真值x為零,結合符號位S為0或1,有正零和負零之分。當階碼E 為全1且尾數M 為全0時,表示的真值x 為無窮大,結合符號位S為0或1,也有+∞和-∞之分。這樣在32位浮點數表示中,要除去E 用全0和全1(255)10表示零和無窮大的特殊情況,指數的偏移值不選128(10000000),而選127(01111111)。對于規格化浮點數,E的范圍變為1到254,真正的指數值e 則為-126到+127。因此32位浮點數表示的絕對值的范圍是10-38~1038(以10的冪表示)。
浮點數所表示的范圍遠比定點數大。一臺計算機中究竟采用定點表示還是浮點表示,要根據計算機的使用條件來確定。一般在高檔微機以上的計算機中同時采用定點、浮點表示,由使用者進行選擇,而單片機中多采用定點表示。
[例1] 若浮點數x的754標準存儲格式為(41360000)16,求其浮點數的十進制數值。
[解:]
將十六進制數展開后,可得二進制數格式為
指數e=階碼-127=10000010-01111111=00000011=(3)10
包括隱藏位1的尾數1.M=1.011 0110 0000 0000 0000 0000=1.011011于是有:
x=(-1)s×1.M×2e
=+(1.011011)×23=+1011.011=(11.375)10
[例2] 將(20.59375)10轉換成754標準的32位浮點數的二進制存儲格式。
[解:]
首先分別將整數和分數部分轉換成二進制數:
20.59375=10100.10011
然后移動小數點,使其在第1,2位之間
10100.10011=1.010010011×24 e=4
于是得到:
S=0, E=4+127=131, M=010010011
最后得到32位浮點數的二進制存儲格式為:
0100 0001 1010 0100 1100 0000 0000 0000=(41A4C000)16
3.十進制數串的表示方法
目前,大多數通用性較強的計算機都能直接處理十進制形式表示的數據。十進制數串在計算機內主要有兩種表示形式:
(1)字符串形式
字符串形式:一個字節存放一個十進制的數位或符號位。為了指明這樣一個數,需要給出該數在主存中的起始地址和位數(串的長度)。
(2)壓縮的十進制數串形式
壓縮的十進制數串形式:一個字節存放兩個十進制的數位。它比前一種形式節省存儲空間,又便于直接完成十進制數的算術運算,是廣泛采用的較為理想的方法。
用壓縮的十進制數串表示一個數,也要占用主存連續的多個字節。每個數位占用半個字節(即4個二進制位),其值可用二-十編碼(BCD碼)或數字符的ASCII碼的低4位表示。符號位也占半個字節并放在最低數字位之后,其值選用四位編碼中的六種冗余狀態中的有關值,如用12(c)表示正號,用13(d)表示負號。
在上述表示中,每一個小框內給出一個數值位或符號位的編碼值(用十六進制形式給出),符號位在數字位之后。 前兩個小框占一個字節,后兩個小框占一個字節。
與第一種表示形式類似,要指明一個壓縮的十進制數串,也得給出它在主存中的首地址和數字位個數(不含符號位),又稱位長,位長為0的數其值為0。十進制數串表示法的優點是位長可變,許多機器中規定該長度從0到31,有的甚至更長。
4.自定義數據表示
在傳統的計算機體系結構中,用指令本身來說明操作數據的類型。如定點加法表示操作數是純小數或純整數;浮點加法表示操作數是浮點數;十進制加法表示操作數是BCD數。由于操作數據類型不同,要設三種不同的指令(操作碼)來加以區分。
自定義數據表示則用數據本身來說明數據類型。表示形式有兩種,即標志符數據表示和描述符數據表示。
標志符數據表示要求對每一個數據都附加標志符,其格式如下:
其中標志符指明后面的數據所具有的類型,如整數、浮點數、BCD數、字符串等。
標志符數據表示的優點是能簡化指令系統,便于程序調試和查錯,缺點是數據區域占用的存儲空間增加,并使指令執行的速度減慢。
描述符數據表示主要用來描述多維結構的數據類型,如向量、矩陣、記錄等。其格式為:
描述符標志位部分指明這是一個數據描述符;特征標記部分指明數據的各種特征;長度部分指明數組中元素個數;起始地址部分指明數據塊的首地址。
標志符與描述符表示的區別是:
(1)標志符與每個數據相連,二者合起來存放在一個存儲單元,而描述符要和數據分開存放。
(2)描述符表示中,先訪問描述符,后訪問數據,至少增加一次訪存。
(3)描述符是程序的一部分,而不是數據的一部分。
非常好我支持^.^
(0) 0%
不好我反對
(0) 0%
相關閱讀:
- [電子說] Blackwell GB100能否在超級計算機和AI市場保持領先優勢? 2023-10-24
- [電子說] 3線串行數據通訊EEPROM的使用 2023-10-23
- [電子說] 浩辰軟件深耕CAD領域 致力于成為行業標桿企業 2023-10-23
- [電子說] SymPy:四行代碼秒解微積分 2023-10-21
- [電子說] 強固型智慧工廠解決方案:BOXER-6406-AND 2023-10-21
- [電子說] 飛秒激光器在醫學上的應用 2023-10-21
- [電子說] TCP/IP協議和OPC協議的區別 2023-10-20
- [電子說] 行業巨頭聯手推動AI數據格式標準化,微軟打造云時代開源應用平臺 2023-10-20
( 發表人:admin )