小數的表示方式有定點數和浮點數兩種,
這裡補充 一下浮點數的表示
如 下圖
-0.0110b = -0.375D
規格化表示(科學計數法)為 -1.1*2^-2
以單精度浮點數為例,
31 位為符號為 1(負數)
30到23位 為7FH +(-2) = 7DH =0111 1101 b
其中7FH 為偏移量,因為階數以移碼錶示,偏移量為7FH
尾數為 1.1 ,各位數的1,是規格化數的1,所有的數都一樣,所以可以預設隱藏
因此 22 到0 位為 1000000 00000000 00000000
所以-0.0110 = 10111110 11000000 00000000 00000000 b = BEC0 0000H
C 語言驗證程式碼:
#include<stdio.h>
int main()
{
long int x = 0xBEC00000;
float b = *(float*)&x;
printf("b=%f\n",b);
}
小數的表示方式有定點數和浮點數兩種,
這裡補充 一下浮點數的表示
如 下圖
-0.0110b = -0.375D
規格化表示(科學計數法)為 -1.1*2^-2
以單精度浮點數為例,
31 位為符號為 1(負數)
30到23位 為7FH +(-2) = 7DH =0111 1101 b
其中7FH 為偏移量,因為階數以移碼錶示,偏移量為7FH
尾數為 1.1 ,各位數的1,是規格化數的1,所有的數都一樣,所以可以預設隱藏
因此 22 到0 位為 1000000 00000000 00000000
所以-0.0110 = 10111110 11000000 00000000 00000000 b = BEC0 0000H
C 語言驗證程式碼:
#include<stdio.h>
int main()
{
long int x = 0xBEC00000;
float b = *(float*)&x;
printf("b=%f\n",b);
}