105年普考程式設計概要

二、根據 IEEE 754 二進位浮點數算術標準,請問下列 C 語言程式碼執行後輸出為何?(25分)

int main( ) {

float A = 100;

float B = -125.53125;

printf("%08X\n", *(unsigned int *) &A);

printf("%08X\n", *(unsigned int *) &B);

}

答:

IEEE 75432bits格式:float

(-1)S×(1.M)2×2E-127

1 bit

8 bit

23 bit

 

 

 

S

E

M

SSign bit,用來表示浮點數的正負號。S = 0表示正,S = 1表示負。

EExponent,用來表示指數部份。

MMantissa fraction,用來表示係數部份。

()&A

A = 100 = 110 01002

100 = (-1)0×(1.1001)2×26

S = 0M = 1001E-127 = 6E = 133 = 1000 01012

1 bit

8 bit

23 bit

0

10000101

10010000000000000000000

S

E

M

二進位轉十六進位:

二進位

0100

0010

1100

1000

0000

0000

0000

0000

十六進位

4

2

C

8

0

0

0

0

執行結果:42C80000

()&B

B = -125.53125 = -1111101.100012

0.53125

0.53125×2 = 1.0625,取整數1,然而去除1

0.0625×2 = 0.125,取整數0

0.125×2 = 0.25,取整數0

0.25×2 = 0.5,取整數0

0.5×2 = 1,取整數1,結束。

0.53125 = 0.100012

1111101.10001

B = 1111101.100012 = (-1)1×(1.11110110001)2×26

S = 1M = 11110110001E-127 = 6E = 133 = 1000 01012

1 bit

8 bit

23 bit

1

10000101

11110110001000000000000

S

E

M

二進位轉十六進位:

二進位

1100

0010

1111

1011

0001

0000

0000

0000

十六進位

C

2

F

B

1

0

0

0

執行結果:C2FB1000

arrow
arrow
    文章標籤
    普考程式設計概要
    全站熱搜

    jacksaleok 發表在 痞客邦 留言(0) 人氣()