cari

Rumah  >  Soal Jawab  >  teks badan

c++ - purata dua nombor titik apungan tanpa operator/?

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

?
巴扎黑巴扎黑2731 hari yang lalu1027

membalas semua(2)saya akan balas

  • 代言

    代言2017-07-03 11:43:47

    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.

    balas
    0
  • 代言

    代言2017-07-03 11:43:47

    average = (a + b) * 0.5;

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

    balas
    0
  • Batalbalas