Operasi Bitwise dengan Nilai Titik Terapung
Dalam C/C , operasi bitwise hanya boleh dilakukan pada integer, bukan pada titik terapung nombor. Ini kerana nombor titik terapung menggunakan perwakilan binari yang tidak serasi dengan operasi bitwise.
Contohnya, apabila cuba melakukan operasi ikut bit pada nombor titik terapung a, seperti a = a & ( 1 << 3), pengkompil akan menghasilkan ralat. Ini kerana operan pengendali bitwise & mestilah integer.
Menghantar nombor titik terapung a kepada integer, seperti dalam a = (int)a & (1 << 3), membolehkan operasi bitwise dilakukan. Walau bagaimanapun, pendekatan ini mempunyai had. Operasi dilakukan pada perwakilan integer a selepas membundarkan nilai titik terapung.
Satu lagi percubaan untuk menghantar nilai ke penunjuk kosong, a = (kosong*)a & (1 << 3), juga tidak sah. Ini kerana jenis operan pengendali bitwise & mestilah sama dengan operannya. Walaupun void* mempunyai perwakilan yang lebih besar daripada int, ia tidak boleh digunakan sebagai operan untuk operasi bitwise.
Satu-satunya cara untuk melakukan operasi bitwise pada nombor titik terapung ialah menganalisis kandungan bit mentah ingatan yang diduduki oleh nilai. Ini boleh dilakukan menggunakan kesatuan:
union FloatToInt { float f; int i; }; FloatToInt fi; fi.f = 1.4123; fi.i = fi.i & (1 << 3);
Atas ialah kandungan terperinci Bolehkah Operasi Bitwise Dilakukan pada Nombor Titik Terapung dalam C/C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!