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;
}
|