Operasi Bitwise pada Nombor Titik Terapung
Operasi bitwise dalam C/C memanipulasi perwakilan nilai nombor, bukan nilai sebenar. Nombor titik terapung, walau bagaimanapun, tidak mempunyai perwakilan tahap bit yang ditentukan dalam bahasa.
Ralat Pengkompil: & Operand Tidak Terapung
Percubaan anda untuk melakukan bitwise DAN (&) operasi pada pembolehubah apungan, a, gagal kerana "& operan memerlukan jenis integer dan tidak boleh digunakan pada apungan. Menghantar a kepada integer, cth., int a = (int) 1.4123;, membenarkan operasi tetapi melakukan bitwise DAN pada perwakilan integer bagi nombor bulat.
int to void Cast vs float to void. Hantar
Integer boleh dibuang ke batal* kerana ia mewakili nilai dalam Memori "mentah". Nombor titik terapung, sebaliknya, tidak mempunyai perwakilan bit asas yang jelas, oleh itu, ia tidak boleh dibuang dengan pasti ke batal*.
Menganalisis Titik Terapung. Kandungan Bit
Untuk menganalisis kandungan bit nombor titik terapung, anda boleh menggunakan kesatuan untuk menggabungkan apungan dengan jenis perwakilan yang menyokong operasi bitwise:
union { float f_value; unsigned int u_value; } number; number.f_value = 1.4123; unsigned int bitmask = (1 << 3); number.u_value &= bitmask; // Perform bitwise AND on the integer representation
Sebagai alternatif, dalam C , anda boleh mentafsir semula objek titik terapung sebagai tatasusunan aksara tidak bertanda:
float f = 5.0; unsigned char *c = reinterpret_cast<unsigned char *>(&f); // Inspect bit content from c[0] to c[sizeof(f) - 1]
Kesimpulan
Operasi bitwise tidak boleh dilakukan secara langsung pada nombor titik terapung kerana ia tidak mempunyai perwakilan peringkat bit. Sebaliknya, anda boleh menganalisis kandungan bit memori asas menggunakan kaedah seperti kesatuan atau tafsiran semula.
Atas ialah kandungan terperinci Bolehkah Operasi Bitwise Dilakukan Terus pada Nombor Titik Terapung dalam C/C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!