c++ - purata dua nombor titik apungan tanpa operator/?
巴扎黑2017-07-03 11:41:47
0
2
1025
Seperti tajuk, integer boleh menggunakan operasi bit, bagaimana untuk menyelesaikan nombor titik terapung Disebabkan had perkataan tajuk, teks asal ialah bagaimana untuk mengira purata dua nombor titik apungan tanpa 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 ,结果正确
Saya menggunakan dua kali ganda pada mulanya, tetapi outputnya melimpah tiba-tiba saya terfikir bahawa pada komputer saya (kebanyakan komputer) berganda ialah 8 bait, dan int hanya 4 bait, jadi hanya tukar dua kali kepada terapung.
Tiada kesukaran dalam kod Satu-satunya yang saya rasa ialah penukaran integer dan nombor titik terapung dalam binari Anda akan mengetahui bahagian ini jika anda telah mempelajari komposisi komputer, perwakilan titik terapung IEEE.
Terima kasih atas jemputan.
Saya menggunakan dua kali ganda pada mulanya, tetapi outputnya melimpah tiba-tiba saya terfikir bahawa pada komputer saya (kebanyakan komputer) berganda ialah 8 bait, dan int hanya 4 bait, jadi hanya tukar dua kali kepada terapung.
Tiada kesukaran dalam kod Satu-satunya yang saya rasa ialah penukaran integer dan nombor titik terapung dalam binari Anda akan mengetahui bahagian ini jika anda telah mempelajari komposisi komputer, perwakilan titik terapung IEEE.
average = (a + b) * 0.5;
Di luar topik,
Saya rasa soalan ini sebenarnya bukan soalan pengaturcaraan, ia sepatutnya menjadi pengusik otak~