В битах C умножьте на 3 и разделите на 16
У моего приятеля были такие загадки, а это та, что ускользает от меня. Вот в чем проблема, вам дают число, и вы хотите вернуть это число умноженное на 3 и деленное на 16 с округлением до 0. Должно быть легко. Подвох? Вы можете использовать только! ~ & ^ | + << >> операторов и из них только комбинация из 12.
int mult(int x){
//some code here...
return y;
}
Моя попытка была:
int hold = x + x + x;
int hold1 = 8;
hold1 = hold1 & hold;
hold1 = hold1 >> 3;
hold = hold >> 4;
hold = hold + hold1;
return hold;
Но это не похоже на работу. Я думаю, что у меня проблема с потерей битов, но я не могу придумать, как их спасти. Другая перспектива была бы хороша. Просто добавьте, что вы также можете использовать только переменные типа int и без циклов, если можно использовать операторы или вызовы функций.
Прямо сейчас у меня есть номер 0xfffffff. Предполагается, что он возвращает 0x2ffffff, но возвращает 0x3000000.