diff options
6 files changed, 161 insertions, 0 deletions
| -rw-r--r-- | Sem. 4/README.md | 90 | ||||
| -rw-r--r-- | Sem. 4/Task1.cpp | 14 | ||||
| -rw-r--r-- | Sem. 4/Task2.cpp | 17 | ||||
| -rw-r--r-- | Sem. 4/Task3.cpp | 10 | ||||
| -rw-r--r-- | Sem. 4/Task4.cpp | 10 | ||||
| -rw-r--r-- | Sem. 4/bitwise_examples.cpp | 20 |
diff --git a/Sem. 4/README.md b/Sem. 4/README.md new file mode 100644 index 0000000..dd3a62c --- /dev/null +++ b/Sem. 4/README.md @@ -0,0 +1,90 @@ +Десетична бройна система.
+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*
+
+*Пример 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. 4/Task1.cpp b/Sem. 4/Task1.cpp new file mode 100644 index 0000000..2fece1e --- /dev/null +++ b/Sem. 4/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. 4/Task2.cpp b/Sem. 4/Task2.cpp new file mode 100644 index 0000000..fca8f47 --- /dev/null +++ b/Sem. 4/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. 4/Task3.cpp b/Sem. 4/Task3.cpp new file mode 100644 index 0000000..1f21ba4 --- /dev/null +++ b/Sem. 4/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. 4/Task4.cpp b/Sem. 4/Task4.cpp new file mode 100644 index 0000000..9bb0e6e --- /dev/null +++ b/Sem. 4/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. 4/bitwise_examples.cpp b/Sem. 4/bitwise_examples.cpp new file mode 100644 index 0000000..e8524ab --- /dev/null +++ b/Sem. 4/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;
+}
\ No newline at end of file |
