Решить выражение

Вычисление выражений с использованием побитовых операций. Задано целые числа a, b, c и d. Вычислить выражение без использования операций умножения и деления (заменив на их операций оползней) Только начал изучать, помогите с ошибками. введите сюда описание изображения


#include <iostream>
#include <clocale>
using namespace std;
int main()
{
    cout << "Enter number";
    int a, c, b, d, x, x1 , x2, x3 ; 
    cin >> a, b, c, d;
    x1 = a << 17 + d << 6 + c << 6 >> 32;
    x2 = b << 1280 + d << 63 - c << 9;
        x = x1 - x2;
        cout << x; 
        endl;
    return 0;
}

Ответы (1 шт):

Автор решения: Harry

Да все просто - ну вот что такое a*34? Это просто a*32 + a*2 = a *25 + a*21- итого,

(a<<5)+(a<<1)

d*127 = d*128 - d = d*27 - d, так что

(d<<7)-d

Дальше понятно? Сдвиг ("оползень", как вы его назвали...) влево на N бит - это умножение на 2N, вправо - деление...

И еще - не забывайте, что у операций сдвига приоритет ниже, чем у плюсов и минусов...

→ Ссылка