c++ - purata dua nombor titik apungan tanpa operator/?
巴扎黑
巴扎黑 2017-07-03 11:41:47
0
2
1032

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 / ?

?
巴扎黑
巴扎黑

membalas semua(2)
代言

Terima kasih atas jemputan.

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.

代言

average = (a + b) * 0.5;

Di luar topik,
Saya rasa soalan ini sebenarnya bukan soalan pengaturcaraan, ia sepatutnya menjadi pengusik otak~

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan