1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
# Бройни системи и побитови операции
| Десетична (decimal) | Двоична (binary) | осмична (octal) | Шестнайсетична (hexadecimal) | Унарна (unary) |
|---------------------|------------------|-----------------|------------------------------|-------|
| 00 | 00000 | 00 | 00 | 00001 |
| 01 | 00001 | 01 | 01 | 00011 |
| 02 | 00010 | 02 | 02 | 00111 |
| 03 | 00011 | 03 | 03 | 01111 |
| 04 | 00100 | 04 | 04 | ... |
| 05 | 00101 | 05 | 05 | |
| 06 | 00110 | 06 | 06 | |
| 07 | 00111 | 07 | 07 | |
| 08 | 01000 | 10 | 08 | |
| 09 | 01001 | 11 | 09 | |
| 10 | 01010 | 12 | 0A | |
| 11 | 01011 | 13 | 0B | |
| 12 | 01100 | 14 | 0C | |
| 13 | 01101 | 15 | 0D | |
#### Преобразуване между бройни системи
Примери:
- Алгоритъм за преобразуване от произволна бройна система в дестична бройна система
- Алгоритъм за преобразуване от десетчина бройна система в произволна бройна система
#### Представяния на отрицателни числа
- One's complement (5) [101] -(flip)-> [010] (-5)
- Two's complement (5) [101] -(flip)-> [010] + [001] = [011] (-5)
#### Побитови операции
прилагат върху един бит или набор от повече отделни битове на двоични числа
- Побитово И (**&**)
- Побитово ИЛИ (**|**)
- Побитово ИЗКЛЮЧВАЩО ИЛИ (**^**)
- Побитово отместване (**<<** ) ( **>>**)
| | |
|--------|-----------|
| a | 101010100 |
| b | 100101110 |
| a&b | 100000100 |
| a \| b | 101111110 |
| a^b | 000000100 |
| a << 2 | 101010000 |
| a >> 2 | 001010101 |
Примери:
- Функция, която с побитови операции проверява дали число е четно
- Функция, която с побитови операции повдига 2 на степен k.
<h3>Задачи</h3>
**Задача 1:** Напишете функция, която приема число от в произволна бройна система и преобразува **директно** (без да минава през десетична) числото в друга произволна бройна система.
**Задача 2** Да се напише функция, която приема масив, в който всяко число се среща 2 пъти с изключение на едно число, което се среща веднъж.
Напишете функция, която приема такъв масив и връща кое е това число.
(Подсказка: използвайте побитови операции, за да постигнете линейно решение)
*Вход: [9 18 9 12 18 15 12], Изход: 15*
**Задача 3** Напишете функция, която приема цяло число и връща броя на 1-ците в двоичния му запис.
*Вход: 189, Изход: 6*
**Задача 4 :** Напишете функция, която приема цяло число и обръща най-десният бит в него, който е единица.
*Вход: 12, Изход: 8*
*Вход: 15, Изход: 14*
**Задача 5:** Напишете функция, която по подадено цяло число n и цяло число k и връща числото, което е "закодирано" в последните k бита на n.
*Вход: 15 2, Изход: 3*
*Вход: 189 3, Изход: 5*
*Вход: 189 4, Изход: 13*
**Задача 6:** Напишете функция, която приема цяло число n и цяло число k и връща дали k в двоичен запис (разглеждайки го без водещите 0-ли) е част от двоичния запис на n.
*Вход: 15 3, Изход: true*
*Вход: 13 5 Изход: true*
*Вход: 13 7, Изход: false*
|