Obliczenia z operatorem przesunięcia binarnego

0

Program który wczyta dwie liczby a i b i policzy wynik działania a * 2**b ( a razy 2 do potęgi b). Należy użyć operatora przesunięcia binarnego (zamiast wymnażania 2**b).

Czy wie ktoś jak to zrobić?

5

Operator przesunięcia bitowego w C++ to << więc główna linia programu to będzie long result = a * (2 << (b - 1)). Trzeba by jeszcze dopisać warunek dla 0 == b oraz obsługę błędu dla b < 0

4
KamilAdam napisał(a):

.... long result = a * (2 << (b - 1)). Trzeba by jeszcze dopisać warunek dla 0 == b oraz obsługę błędu dla b < 0

Po kiego tak komplikować?
long result=a*(1<<b);
i po krzyku.

3

@KamilAdam: i jeszcze obsługa błędu b>=32, bo to jest UB (o ile long ma 32 bity)

1 użytkowników online, w tym zalogowanych: 0, gości: 1