diff options
sem 8
6 files changed, 200 insertions, 0 deletions
| -rw-r--r-- | Sem. 04/README.md | 129 | ||||
| -rw-r--r-- | Sem. 04/Task1.cpp | 14 | ||||
| -rw-r--r-- | Sem. 04/Task2.cpp | 17 | ||||
| -rw-r--r-- | Sem. 04/Task3.cpp | 10 | ||||
| -rw-r--r-- | Sem. 04/Task4.cpp | 10 | ||||
| -rw-r--r-- | Sem. 04/bitwise_examples.cpp | 20 |
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; +} |
