普考申論題
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);
}
📝 此題為申論題
思路引導 VIP
看到指標轉型 *(unsigned int *) &float_var,應立刻聯想其目的為讀取浮點數在記憶體中的原始二進位位元(Bit Pattern)。解題需運用 IEEE 754 單精度(32-bit)標準,將數值依序拆解為「符號位元(1-bit)」、「偏差指數(8-bit, bias 127)」與「假數(23-bit)」,最後將 32 bits 組合並轉為十六進位。
🤖
AI 詳解
AI 專屬家教
【解題關鍵】利用 C 語言的指標強制轉型(Pointer Casting)可繞過編譯器的型別轉換,直接讀取記憶體中 IEEE 754 單精度(32-bit)浮點數的原始二進位資料,再轉換為十六進位輸出。 【詳解】 IEEE 754 單精度浮點數結構為:1 位元符號(Sign, S) + 8 位元指數(Exponent, E, 偏差值 127) + 23 位元假數(Mantissa, M)。
▼ 還有更多解析內容