, используя только добавление, вычитание и биты, как я могу умножить целое число по данному номеру?
Например, я хочу умножить целое число на 17.
Я знаю, что изменение слева умножается на множественное из 2 и сдвигаемое направо делятся на мощность 2, но я не знаю, как обобрать это.
Как насчет негативных чисел? Преобразуйте в дополнение к двум и сделайте одну и ту же процедуру?
( Обратите внимание: Хорошо, я получил это, не преобразование. Вы преобразуете в дополнение к двум дополнениям, а затем вы переживаете в соответствии с номером слева направо вместо Право налево.)
Теперь приходит сложная часть. Мы можем использовать только 3 оператора.
Например, умножение на 60 я могу сделать, используя это:
(x << 5) + (x << 4) + (x << 3) + (x << 2)
где x
- это число, которое я умножую. Но это 7 операторов - как я могу консервировать это использовать только 3?