信息學聯(lián)賽輔導:Fillchar過程全解(3)
2009-11-12 22:10:14網(wǎng)絡
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
1
longint類型的數(shù)據(jù)是用補碼表示的有符號數(shù),最高位是符號位,0表示正,1表示負,由于本數(shù)是正數(shù),故補碼、反碼及原碼均為00000001000000010000000100000001,其值為(224+216+28+1)10=( 16843009)10;
如果,執(zhí)行的是fillchar(a,size(a),255),結果又是怎樣的?
由于(255)10=(11111111)2,故填充后,補碼為11111111111111111111111111111111,它是負數(shù),則其反碼為11111111111111111111111111111110,原碼為10000000000000000000000000000001,其值為-1
6.single 每個元素是4字節(jié)量,全部為2.36942782761724E-0038,這是因為,對于每個元素來講,用1填充后的結果與longint類型的二進制碼完全相同,但是, single類型對此數(shù)據(jù)的“解釋”卻完全不同:
A.最高位(第31位)是整個數(shù)的符號位,0為正, 1為負;
B.接著的8位(第30位至第23位)是用移碼表示的階碼;
C.后面的23位(第22至第0位)表示尾數(shù);
D.單精度量的值為:±2實際指數(shù)*實際尾數(shù)
、佟⑷綦A碼=00000000,則實際指數(shù)=-126,實際尾數(shù)=(0.???????????????????????)2,其中的?代表相應位置上的二進制碼(0或1);顯然,在?全為0時, 這個單精度量的值為0;
、、若階碼大于00000000且小于11111111,則實際指數(shù)=階碼-(127)10=階碼-01111111,實際尾數(shù)=(1.???????????????????????)2
、、INF(無窮大)若階碼=11111111,尾數(shù)全0,則已達上界,被作為無窮大
、堋⒏↑c運算錯誤:若階碼=11111111,尾數(shù)在(00000000000000000000000, 10000000000000000000000)之間。
⑤、NAN(非數(shù):Not A Number)若階碼=11111111,尾數(shù)在[10000000000000000000000, 11111111111111111111111]之間
下面,我們來分析二進制碼為00000001000000010000000100000001的單精度數(shù)(single類型)的值是多少。①最高位為0,表示正數(shù);②階碼為00000010,換成10進制數(shù)為2,則實際指數(shù)=2-127=-125,③尾數(shù)為00000010000000100000001,實際尾數(shù)=1. 00000010000000100000001, 換成10進制數(shù)為1+2-7+2-15+2-23=1.00784313678741455078125, ④此單精度數(shù)的值是+2-125*1.00784313678741455078125≈2.36942782761724e-38