Я пробовал это:
float a = 1.4123;
a = a & (1 << 3);
Я получаю ошибку компилятора, говоря, что операнд &
не может иметь тип float.
Когда я это сделаю:
float a = 1.4123;
a = (int)a & (1 << 3);
Я запускаю программу. Единственное, что побитовая операция выполняется для целочисленного представления числа, полученного после округления.
Не допускается также следующее.
float a = 1.4123;
a = (void*)a & (1 << 3);
Я не понимаю, почему int
можно отнести к void*
, но не float
.
Я делаю это, чтобы решить проблему, описанную в вопросе Как решить линейные уравнения с использованием генетического алгоритма?.