有一個32位元的浮點數,請用10進位表示出來,2進位浮點數的定義為:第一個數字如果是0代表正數,如果是1代表負數,2~9位是2的次方數加上127(為了能表示負數次方),10到32位則是表示原數化成2進位後,以類似科學記號的方式表示時的小數部分。
EX: 01000011110001000111100000000000
第一個0代表這是一個正數
2~9表示指數 10000111 所以135-127=8 代表為2的8次方
10到32位為小數部分10001000111100000000000 等於 0.534912
然後再將0.534912+1=1.534912 再乘以2的8次方
所以答案為 392.938
題目會給你2組測資讀入(t4.txt),請輸出2組測資的答案和相加之後的結果
範例輸入(t4.txt)
01000011110001000111100000000000
10000110101000101011000010000000
範例輸出
字串1 01000011110001000111100000000000 = 392.938
字串2 10000110101000101011000010000000 = -6.1197e-035
392.938
以下是我的程式碼,若要看請反白
#include
#include
using namespace std;
int main()
{
ifstream fin("T4.txt");
char ca[40];
double da,db=0;
int ia,ib,ic,id=0;
while(fin>>ca)
{
ia=ib=ic=0;
for(int i=1;i
{
ia*=2;
ia+=ca[i]-'0';
}
ia-=127;
ib=1;
for(int i=9;i
{
ib*=2;
ic++;
ib+=ca[i]-'0';
}
da=ib;
for(int i=23;i>ia;i--)da/=2;
for(int i=23;i
cout
db+=da;
}
cout
system("pause");
}
亂貼小站公告欄
- Nov 13 Thu 2008 13:03
97年嘉中資訊第四題
close
全站熱搜
留言列表
發表留言