From 27e487fd64fd29ded6b378384da25d5d691f331b Mon Sep 17 00:00:00 2001 From: Angel Dimitriev Date: Wed, 4 Nov 2020 19:15:47 -0500 Subject: Add files via upload --- Sem. 4/README.md | 90 +++++++++++++++++++++++++++++++++++++++++++++ Sem. 4/Task1.cpp | 14 +++++++ Sem. 4/Task2.cpp | 17 +++++++++ Sem. 4/Task3.cpp | 10 +++++ Sem. 4/Task4.cpp | 10 +++++ Sem. 4/bitwise_examples.cpp | 20 ++++++++++ 6 files changed, 161 insertions(+) create mode 100644 Sem. 4/README.md create mode 100644 Sem. 4/Task1.cpp create mode 100644 Sem. 4/Task2.cpp create mode 100644 Sem. 4/Task3.cpp create mode 100644 Sem. 4/Task4.cpp create mode 100644 Sem. 4/bitwise_examples.cpp 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 +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 +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 +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 +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 +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 -- cgit v1.3.1-23-gd82d