aboutsummaryrefslogtreecommitdiff
path: root/week02/exercise03.cpp
blob: 009cf71c1fc9232e45569d1330c7a679a4dcaab7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>

int main() {
	unsigned int a;
	std::cin >> a;
	// Отместването на дясно с всяка единица дели числото на 2, докато отместването на ляво умножава по 2
	// Нарочно 16 и 8 са степени на двойката
	//
	// Защо това се получава, еми, всеки бит се съпоставя с 2 на някаква степен, когато превръщаме в десетичен запис
	// Примерно, да погледнем 101, десетично това е        1 * 2^2 + 0 * 2^1 + 1 * 2^0
	// Нека да разделим това уравнение на 2, това е        0 * 2^2 + 1 * 2^1 + 0 * 2^0
	// Нека сега да умоножим оригиналното по 2,  1 * 2^3 + 0 * 2^2 + 1 * 2^1 + 0 * 2^0
	// Сравнително очевидно се вижда, че деление и умножение на 2 измества битвоете надясно и наляво
	std::cout << (a >> 4) << ' ' << (a << 3) << std::endl;
}