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