aboutsummaryrefslogtreecommitdiff
path: root/week02/exercise03.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'week02/exercise03.cpp')
-rw-r--r--week02/exercise03.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/week02/exercise03.cpp b/week02/exercise03.cpp
new file mode 100644
index 0000000..009cf71
--- /dev/null
+++ b/week02/exercise03.cpp
@@ -0,0 +1,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;
+}