W kodzie:
int a = 5;
int b = a << 2;
operator << oznacza przesunięcie bitowe w lewo. Działa to tak, że zapis binarny liczby jest przesuwany o wskazaną liczbę pozycji, a z prawej strony dopisywane są zera.
Dla a = 5 mamy zapis binarny: 0101 (pomijając wiodące zera). Przesunięcie o 2 bity w lewo daje: 0101 00. To jest równoważne mnożeniu przez 2^2, czyli:
Dlatego poprawna odpowiedź to: 20.
Dlaczego pozostałe odpowiedzi są błędne?
- 10 – to wynik pomylenia przesunięcia o 2 bity z mnożeniem przez 2 (czyli przesunięciem o 1 bit) albo zbyt "intuicyjnym" skojarzeniem liczby 2 z podwojeniem.
- 15 – może wynikać z błędnego dodawania (np. 5 + 10) albo z mylenia operacji bitowych z innymi operatorami; przesunięcie w lewo nie polega na dodawaniu.
- 25 – to typowa pomyłka "5 razy 5", czyli zastąpienie reguły 2^n (potęga dwójki) przez n jako zwykły mnożnik.
Wskazówka egzaminacyjna: zapamiętaj prostą regułę: dla liczb niepowodujących przepełnienia, x << n oznacza x · 2^n. To jest szczególnie przydatne w elektronice i systemach wbudowanych przy pracy na bitach i rejestrach.