Website Summary Files Commits Branches @commit @diff @stats
path: root / Sem. 04
diff options
context:
space:
mode:
Commit7881119e0914b9207568918fcf868eea84ef3d78 (patch)
Author
 Angeld55 <angel_dimitriev@abv.bg>
2020-11-28 01:45:44 +0200
Committer
 Angeld55 <angel_dimitriev@abv.bg>
2020-11-28 01:45:44 +0200
Filesab70701506971ec44b9aab9ba00ad9525b8da0e5 /Sem. 04
Introduction_to_programming_FMI-7881119e0914b9207568918fcf868eea84ef3d78.tar
Introduction_to_programming_FMI-7881119e0914b9207568918fcf868eea84ef3d78.tar.gz
Introduction_to_programming_FMI-7881119e0914b9207568918fcf868eea84ef3d78.zip
Parente5646c51794632f5816c00f4d1e7933ea7dcbbc0 (diff)
sem 8
6 files changed, 200 insertions, 0 deletions
-rw-r--r--Sem. 04/README.md129
-rw-r--r--Sem. 04/Task1.cpp14
-rw-r--r--Sem. 04/Task2.cpp17
-rw-r--r--Sem. 04/Task3.cpp10
-rw-r--r--Sem. 04/Task4.cpp10
-rw-r--r--Sem. 04/bitwise_examples.cpp20
diff --git a/Sem. 04/README.md b/Sem. 04/README.md
new file mode 100644
index 0000000..9ce9f75
--- /dev/null
+++ b/Sem. 04/README.md
@@ -0,0 +1,129 @@
+**Десетична бройна система.**
+
+1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 , 12
+
+Защото използваме 10 символа: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
+
+Най-малката бройна система: **Единична бройна система (Unary)**
+
+Символи: 1
+
+1 = 1
+
+2 = 11
+
+3 = 111
+
+4 = 1111
+
+5 = 11111
+
+6 = 111111
+
+
+**Двоична бройна система (binary)**
+
+Символи: 0,1
+
+0 - 00000
+
+1 - 00001
+
+2 - 00010
+
+3 - 00011
+
+4 - 00100
+
+5 - 00101
+
+6 - 00110
+
+**Троична бройна система**
+
+Символи: 0, 1, 2
+
+0 - 00
+
+1 - 01
+
+2 - 02
+
+3 - 10
+
+4 - 11
+
+5 - 12
+
+6 - 20
+
+
+Пребобрзвуане между бройни системи.
+
+**1. Десетична бройна система -> k-ична(k = 2(двоична), k = 3(троична), k = 10(десетична)) бройна система.**
+
+**Пример 1**: Преобразуване на числото 36 от десетична бройна система в двоична бройна система.
+
+Т.е k = 2.
+
+| | | %k |
+|----|--------|----|
+| | n = 36 | 0 |
+| /k | 18 | 0 |
+| /k | 9 | 1 |
+| /k | 4 | 0 |
+| /k | 2 | 0 |
+| /k | 1 | 1 |
+| /k | 0 | |
+
+
+**Гледаме от долу нагоре - 100100**
+
+**Пример 2**: Преобразуване на числото 38 от десетична бройна система в троична бройна система.
+
+Т.е k = 3.
+
+| | | %k |
+|----|--------|----|
+| | n = 38 | 2 |
+| /k | 12 | 0 |
+| /k | 4 | 1 |
+| /k | 1 | 1 |
+| /k | 0 | |
+
+**Гледаме от долу нагоре - 1102**
+
+**1. k-ична бройна система -> десетична бройна система.**
+
+**Пример 3**: Преобразуване на числото 100100 от двоична бройна система в десетична бройна система.
+
+0*2^0 + 0*2^1 + 1*2^2 + 0*2^3 + 0*2^4 + 1*2^5 = 4 + 32 = 36
+
+**Пример 4**: Преобразуване на числото 1102 от троична бройна система в десетична бройна система
+
+2*3^0 + 0*3^1 + 1*3^2 + 1*3^3 = 2 + 9 + 27 = 38.
+
+
+Всяка една променлива има **фиксиран** размер - памет, която заема.
+
+int - 32 бита. бит - 0 или 1
+
+sizeof(int) - > 4 размер в байтове. Байт = 8 бита.
+
+Първият бит в int-а определя знака.
+
+Минимална стойност на променлива от тип int: -2^31.
+
+Максимална стоиност на променлива от тип int: 2^31 - 1
+
+Побитови операции: Виж **bitwise_examples.cpp**
+
+Побитови операции(задачи):
+
+**Задача 1**: Да се провери дали дадено число е четно или нечетно.
+
+**Задача 2**: Въвежда се числa n и k и да се определи стойността на k-тия бит.(Вход: 10, 2 (000..001010) Изход: 0)
+
+**Задача 3**: Въвежда се число n. Да се пресметне 2^n.
+
+**Задача 4**: Въвежда се число n. Да се пресметне числото закодирано в предпоследните 3 бита.
diff --git a/Sem. 04/Task1.cpp b/Sem. 04/Task1.cpp
new file mode 100644
index 0000000..78ea86d
--- /dev/null
+++ b/Sem. 04/Task1.cpp
@@ -0,0 +1,14 @@
+#include <iostream>
+using namespace std;
+
+int main()
+{
+ int n;
+ cin >> n;
+
+ if (n & 1 == 1)
+ cout << "Odd";
+ else
+ cout << "Even";
+
+} \ No newline at end of file
diff --git a/Sem. 04/Task2.cpp b/Sem. 04/Task2.cpp
new file mode 100644
index 0000000..a45a2e6
--- /dev/null
+++ b/Sem. 04/Task2.cpp
@@ -0,0 +1,17 @@
+#include <iostream>
+using namespace std;
+
+int main()
+{
+ int n, k;
+ cin >> n >> k;
+
+ int temp = 1;
+ temp = temp << k;
+
+ if ((n & temp) == 0)
+ cout << "0";
+ else
+ cout << "1";
+
+} \ No newline at end of file
diff --git a/Sem. 04/Task3.cpp b/Sem. 04/Task3.cpp
new file mode 100644
index 0000000..6e71c31
--- /dev/null
+++ b/Sem. 04/Task3.cpp
@@ -0,0 +1,10 @@
+#include <iostream>
+using namespace std;
+
+int main()
+{
+ int n;
+ cin >> n;
+
+ cout << (1 << n);
+} \ No newline at end of file
diff --git a/Sem. 04/Task4.cpp b/Sem. 04/Task4.cpp
new file mode 100644
index 0000000..b0f5c04
--- /dev/null
+++ b/Sem. 04/Task4.cpp
@@ -0,0 +1,10 @@
+#include <iostream>
+using namespace std;
+
+int main()
+{
+ int n;
+ cin >> n;
+ // 14 = 000...001110 - òàêà ñ "ïîáèòîâî è" ùå âçåìåì ñàìî òåçè 3 áèòà, à îñòàíàëèòå ùå áúäàò 0. Ïîñëå ãè ïðåìåñòâàìå äî íà÷àëîòî (èçïîëçâàéêè >>).
+ cout << ((n & 14) >> 1);
+} \ No newline at end of file
diff --git a/Sem. 04/bitwise_examples.cpp b/Sem. 04/bitwise_examples.cpp
new file mode 100644
index 0000000..5dd5684
--- /dev/null
+++ b/Sem. 04/bitwise_examples.cpp
@@ -0,0 +1,20 @@
+#include <iostream>
+using namespace std;
+
+int main()
+{
+ int a = 13; // 000...01101
+ int b = 20; // 000...10100
+
+ int r1 = a & b; // 000...00100(4)
+ int r2 = a | b; // 000...11101(29)
+ int r3 = a ^ b; // 000...11001(25)
+ int r4 = a >> 1;// 000...00110(6)
+ int r5 = b << 1;// 000..101000(40)
+
+ std::cout << r1 << endl;
+ std::cout << r2 << endl;
+ std::cout << r3 << endl;
+ std::cout << r4 << endl;
+ std::cout << r5 << endl;
+}