diff options
| Commit | 85f8d9513af21443305e381d3b97aee4ae507aaf (patch) | |
|---|---|---|
| Author | 2025-10-18 13:38:46 +0300 | |
| Committer | 2025-10-18 13:38:46 +0300 | |
| Files | d04e5f7648bac983012247e5e45515387e5009c0 /src | |
| syndamia.com-85f8d9513af21443305e381d3b97aee4ae507aaf.tar syndamia.com-85f8d9513af21443305e381d3b97aee4ae507aaf.tar.gz syndamia.com-85f8d9513af21443305e381d3b97aee4ae507aaf.zip | ||
| Parent | dab4bc3a22ff680352be93df363f98a7ab6e4e8c (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.du | 146 |
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]. |