84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
如題, 整數可以用位元運算, 浮點數該怎麼解? 受標題字數限制, 原文是 how to calculate the average of two float point numbers without operator / ?
/
謝邀。
float x = 1.1; float y = 1.2; int * xx = (int*)&x; int * yy = (int*)&y; int k = (*xx + *yy) >> 1; float * kk = (float*)&k; cout << *kk << endl; // 1.15 ,结果正确
一開始用的double,輸出溢出了,突然想到我的電腦下(大多數電腦)double是8字節,int只有4字節,所以把double換成float就可以了。
程式碼沒有難點,唯一一個我估計就是整數與浮點數在二進位上轉換,這部分你學過電腦組成就知道了,IEEE浮點表示法。
average = (a + b) * 0.5;
題外話,感覺其實這題不是程式設計題,應該是腦筋急轉彎啊~
謝邀。
一開始用的double,輸出溢出了,突然想到我的電腦下(大多數電腦)double是8字節,int只有4字節,所以把double換成float就可以了。
程式碼沒有難點,唯一一個我估計就是整數與浮點數在二進位上轉換,這部分你學過電腦組成就知道了,IEEE浮點表示法。
average = (a + b) * 0.5;
題外話,
感覺其實這題不是程式設計題,應該是腦筋急轉彎啊~