Re: about 浮點數
|
||||
---|---|---|---|---|
資深會員
|
原來如此
感謝詳盡的解說~~
發表於: 2007/3/14 17:35
|
|||
|
Re: about 浮點數
|
||||
---|---|---|---|---|
高級會員
|
單精度浮點數以32個位元為單位
你可以參考http://www.csie.ntu.edu.tw/~kmchao/bcc05fall/ch02.ppt這分文件 3F 80 00 00 =00111111 10000000 00000000 00000000 最前面一個0代表符號0為正號,1為負號 接下來八個位元代表指數,所以01111111本應代表2^127 但是因為浮點數表達的是2^128 到2^-127的數 所以將00000000代表2^-127而11111111代表+128 那麼01111111就代表2^0 而剩下來的23個位元則代表尾數 所以1就表示為 1.0*2^0,1為正號所以第一個位元符號為0,指數部份為0所以指數表示誠01111111=127而尾數部份為零所以剩下的位元都補0 而原本的1你會看不到的原因是因為浮點數本身就必須將原來的數值化成1.xxxxxxx*2^y的形式,所以可以不用將1表示出來,而只需將後面的尾數表達出來(0.xxxxxx*2^y+1*2^y)所以在換算回來時勢必要自己知道他原來的表示方式是尾數乘以2^y並且要加上一個1*2^y 那麼2表示成1.0*2^1 2為正號所以第一個位元符號為0,指數部份為1所以指數表示成10000000=128而尾數部份為零所以剩下的位元都補0 那麼123.456表示成二進制為 1.929=(1+0.929)*2^6 因為為正號所以第 一個位元符號為0,指數部份為6所以指數表示成10000101=127+6,而尾數部份則為0.929的轉換成二進制為11101101110100101111001
發表於: 2007/3/14 10:17
|
|||
|
about 浮點數
|
||||
---|---|---|---|---|
資深會員
|
請問浮點數各byte的值是怎樣換算出來的?
或是有相關文件可參考嗎 例如 mcc18 ...... use COFF float type float a; a=1; // 0x3F 80 00 00 a=2; // 0x40 00 00 00 a=123.456 // 0x42 F6 E9 79
發表於: 2007/3/13 17:59
|
|||
|