Summary Files Commits Branches @commit @diff @stats
path: root / src
diff options
context:
space:
mode:
Commit85f8d9513af21443305e381d3b97aee4ae507aaf (patch)
Author
 Syndamia <kamen@syndamia.com>
2025-10-18 13:38:46 +0300
Committer
 Syndamia <kamen@syndamia.com>
2025-10-18 13:38:46 +0300
Filesd04e5f7648bac983012247e5e45515387e5009c0 /src
syndamia.com-85f8d9513af21443305e381d3b97aee4ae507aaf.tar
syndamia.com-85f8d9513af21443305e381d3b97aee4ae507aaf.tar.gz
syndamia.com-85f8d9513af21443305e381d3b97aee4ae507aaf.zip
Parentdab4bc3a22ff680352be93df363f98a7ab6e4e8c (diff)
fix(teaching/upp-2025/w03): Move bitwise exercises to third section
1 files changed, 76 insertions, 70 deletions
-rw-r--r--src/teaching/upp-2025/week03/index.du146
diff --git a/src/teaching/upp-2025/week03/index.du b/src/teaching/upp-2025/week03/index.du
index 60388ca..7b18aec 100644
--- a/src/teaching/upp-2025/week03/index.du
+++ b/src/teaching/upp-2025/week03/index.du
@@ -2,9 +2,12 @@
'define expected-reading 9 min
'define created 11 October 2025
-'define edited 16 October 2025
+'define edited 18 October 2025
[$pagenav]
+.warn
+Не сте учили побитови операции, затова някои задачи са преместени в [url #section-3 За любознателните].
+
GitHub Classroom: [url https://classroom.github.com/a/UMc2WhVX]
## За решаване
@@ -38,19 +41,6 @@ GitHub Classroom: [url https://classroom.github.com/a/UMc2WhVX]
|:4 6 7:||:0:|
|:-3 5 13:||:1:|
-### Задача 4
-
-Получавате цяло неотрицателно 32-битово число и "позиция", което е цяло неотрицателно число между 0 и 31.
-
-Трябва да върнете бит-а на съответната позиция в числото, като индекс 0 е най-десния бит (младши), докато 31 е най-левия бит (старши).
-
-[$examples_bg]
-|:5 0:||:1:|
-|:5 1:||:0:|
-|:5 2:||:1:|
-|:4227842047 14:||:0:|
-|:1073741824 30:||:1:|
-
### Задача 5
Получавате десетично число: сума в =[левове]=.
@@ -114,18 +104,6 @@ GitHub Classroom: [url https://classroom.github.com/a/UMc2WhVX]
|:3 -3 -90 0 0:||:1:|
|:5 -2 5 -2 0.4:||:1:|
-### Задача 9
-
-Получавате цяло неотрицателно 8-битово число.
-Трябва да върнете 1 ако броя единици в числото е нечетно и 0 иначе.
-
-[$examples_bg]
-|:0:||:0:|
-|:1:||:1:|
-|:255:||:0:|
-|:238:||:0:|
-|:239:||:1:|
-
### Задача 10
Получавате 6 реални числа: коефициентите на два (ортонормирани) триизмерни вектора.
@@ -141,32 +119,6 @@ GitHub Classroom: [url https://classroom.github.com/a/UMc2WhVX]
|:-1 -2 3 4 0 -8:||:-28:|
|:3 2 1 6 5 2:||:30:|
-### Задача 11
-
-Нека да разделим едно цяло неотрицателно 32-битово число на 4 части, всяка по 8 бита.
-Една такава част ще наречем "подчисло".
-
-Примерно, числото 2148271109 в двоичната бройна система е 10000000000011000000010000000101, което се разделя на подчислата 10000000, 00001100, 00000100 и 00000101 (128, 12, 4 и 5).
-
-Получавате две 32-битови цели неотрицателни числа.
-Сумирайте =[съответните]= подчисла в двете числа и изкарайте резултаното "надчисло".
-
-[$examples_bg]
-|:3 4:||:7:|
-|:255 1:||:0:|
-|:768 1024:||:1792:|
-|:196608 262144:||:458752:|
-|:50331648 67108864:||:117440512:|
-|:4283629573 21629434:||:10291711:|
-
-.comment
-0.0.0.3 + 0.0.0.4 = 7
-0.0.0.255 + 0.0.0.1 = 0
-0.0.3.0 + 0.0.4.0 = 1792
-0.3.0.0 + 0.4.0.0 = 458752
-3.0.0.0 + 4.0.0.0 = 117440512
-255.83.0.5 + 1.74.9.250 = 10291711
-
## За самоподготовка
### Задача 12
@@ -224,12 +176,83 @@ pi / 4 = 0.785397
pi / 6 = 0.523598
pi / 8 = 0.392698
+### Задача 16
+
+Получавате 8 реални числа: всеки две последователни образуват координат в равнината.
+Първите два координата представят горния ляв и долния десен ъгъл на първи правоъгълник.
+Вторите два координата представят горния ляв и долния десен ъгъл на втори правоъгълник.
+
+Трябва да върнете 1 ако правоъгълниците се пресичат и 0 иначе.
+
+[$examples_bg]
+|:0 6 4 0 6 6 8 2:||:0:|
+|:0 6 4 0 4 6 8 2:||:1:|
+|:0 6 4 0 3 3 8 2:||:1:|
+|:-3 4.5 2.1 0.5 0 6 4 0:||:1:|
+|:-4 8 5 -2 0 6 4 0:||:1:|
+
+## За любознателните
+
+.note
+Възможно е да видите тези задачи в бъдещо упражнение, когато учим побитови операции.
+
+### Задача 4
+
+Получавате цяло неотрицателно 32-битово число и "позиция", което е цяло неотрицателно число между 0 и 31.
+
+Трябва да върнете бит-а на съответната позиция в числото, като индекс 0 е най-десния бит (младши), докато 31 е най-левия бит (старши).
+
+[$examples_bg]
+|:5 0:||:1:|
+|:5 1:||:0:|
+|:5 2:||:1:|
+|:4227842047 14:||:0:|
+|:1073741824 30:||:1:|
+
+### Задача 9
+
+Получавате цяло неотрицателно 8-битово число.
+Трябва да върнете 1 ако броя единици в числото е нечетно и 0 иначе.
+
+[$examples_bg]
+|:0:||:0:|
+|:1:||:1:|
+|:255:||:0:|
+|:238:||:0:|
+|:239:||:1:|
+
+### Задача 11
+
+Нека да разделим едно цяло неотрицателно 32-битово число на 4 части, всяка по 8 бита.
+Една такава част ще наречем "подчисло".
+
+Примерно, числото 2148271109 в двоичната бройна система е 10000000000011000000010000000101, което се разделя на подчислата 10000000, 00001100, 00000100 и 00000101 (128, 12, 4 и 5).
+
+Получавате две 32-битови цели неотрицателни числа.
+Сумирайте =[съответните]= подчисла в двете числа и изкарайте резултаното "надчисло".
+
+[$examples_bg]
+|:3 4:||:7:|
+|:255 1:||:0:|
+|:768 1024:||:1792:|
+|:196608 262144:||:458752:|
+|:50331648 67108864:||:117440512:|
+|:4283629573 21629434:||:10291711:|
+
+.comment
+0.0.0.3 + 0.0.0.4 = 7
+0.0.0.255 + 0.0.0.1 = 0
+0.0.3.0 + 0.0.4.0 = 1792
+0.3.0.0 + 0.4.0.0 = 458752
+3.0.0.0 + 4.0.0.0 = 117440512
+255.83.0.5 + 1.74.9.250 = 10291711
+
### Задача 14
От 1970те, в компютрите един от най-често употребяваните методи за представяне на време е така нареченото "UNIX време".
Това е 32-битово цяло число, обозначаващо изминалите секунди от 00:00:00 часа UTC на 1 Януари 1970 година.
-Очевидни лимитации на тази схема са, че най-ранната възможна дата е в края на 1901 и най-късната в началото на 1938.
+Очевидни лимитации на тази схема са, че най-ранната възможна дата е в края на 1901 и най-късната в началото на 2038.
След малко над 12 години, тази схема няма да може да представя текущата дата и час.
Получавате цяло 32 битово число.
@@ -265,23 +288,6 @@ pi / 8 = 0.392698
|:134744072:||:8.8.8.8:|
|:3625466119:||:216.24.57.7:|
-### Задача 16
-
-Получавате 8 реални числа: всеки две последователни образуват координат в равнината.
-Първите два координата представят горния ляв и долния десен ъгъл на първи правоъгълник.
-Вторите два координата представят горния ляв и долния десен ъгъл на втори правоъгълник.
-
-Трябва да върнете 1 ако правоъгълниците се пресичат и 0 иначе.
-
-[$examples_bg]
-|:0 6 4 0 6 6 8 2:||:0:|
-|:0 6 4 0 4 6 8 2:||:1:|
-|:0 6 4 0 3 3 8 2:||:1:|
-|:-3 4.5 2.1 0.5 0 6 4 0:||:1:|
-|:-4 8 5 -2 0 6 4 0:||:1:|
-
-## За любознателните
-
### Задача 17
В автомобилите, за комуникация между всички електронни компоненти се използва [url https://en.wikipedia.org/wiki/CAN_bus Controller Area Network bus].