Мне нужно умножить целое число на дробь, используя побитовые операторы без циклов и тому подобного.
Например, мне нужно умножить на x на 3/8.
Я думал, ты бы:
int value = (x << 1) + x; // Multiply by 3
value = (value >> 3); // Divide by 8
Но это не работает. Я попытался найти дробь двоичного времени в Google, но это дает примеры с плавающей запятой. Я точно не знаю, предназначена ли эта домашняя работа для плавающей запятой, но я подозреваю, что нет, но готовлюсь к ней. Итак, какие-либо предложения?
Мне нужно округлить до нуля, так что есть предложения? Это не работает для номера -268435457.
((x >> 63) & 1)
09.09.2011