Как возвести в степень с помощью битовых операций в C++?

Необходимо с помощью битовых операций и сложения/вычитания посчитать выражение
(50*x + y^32). Как это можно сделать? Язык - C++.
  • Вопрос задан
  • 1790 просмотров
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Тут даже без битовых операций можно обойтись, хватит одного сложения.
x * y - к нулю x раз прибавить y
xy - единицу y раз умножить на x

Можно умножение сделать и битовыми операциями
x * 2n = x << n
y = y0 * 20 + y1 * 21 + ... + yn * 2n,
где yi = 0 или 1
Отсюда
xy = y0 * (x << 20) + y1 * (x << 21) + ... + yn * (x << 2n)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы