Програмирање 2/К1 2019 — разлика између измена
(Нова страница: == Pitanja == === Pitanje 2 === Na jednom računaru, realni brojevi se predstavljaju na širini od 11 bita u formatu seeeemmmmmm, gde je s bit predviđen za kodiran…) |
м (Ispravljen link + uvodni pasus) |
||
| (Није приказано 6 међуизмена 3 корисника) | |||
| Ред 1: | Ред 1: | ||
{{tocright}} | |||
'''Prvi kolokvijum 2019. godine''' održan je 18. marta. Zadaci i rešenja su dostupni sa [https://rti.etf.bg.ac.rs/rti/ir1p2/rokovi/2018_2019/13S111P2_K1_2018_2019_Resenja.pdf stranice predmeta.] | |||
== Pitanja == | == Pitanja == | ||
=== Pitanje 1 === | |||
''Na nekom računaru, realni brojevi se predstavljaju na širini od 11 bita u formatu '''seeeeemmmmm''', gde je '''s''' predznak broja, '''eeeee''' su 5 bitova za eksponent u kodu sa viškom 15 i '''mmmmm''' su 5 bitova normalizovane mantise sa skrivenim bitom (1≤M<2). Sva zaokruživanja se obavljaju prema pravilima ANSI/IEEE standarda za realne brojeve. Neka se u lokaciju A učita broj čija je vrednost 11.5<sub>10</sub>, a u lokaciju B broj čija je vrednost najveća moguća tako da prilikom sabiranja brojeva A i B ne dođe do greške veće od 1 prilikom zaokruživanja. Kolika je vrednost zbira A i B na datom računaru?'' | |||
==== Postavka ==== | |||
Ovo je malo teži zadatak. Traži se najveći broj B tako da kad se sabere sa A greška u zaokruživanju ne bude veća od 1. | |||
Ovaj zadatak ćemo rešiti tako što predstavimo A, i povećavamo eksponent od normalizovanog dok ne dođemo do eksponenata dovoljno velikih da se mora desiti zaokruživanje. Onda računame pojedinačno grešku za svako zaokruživanje i biramo onu koja je manja od 1, a ima najveći eksponent. Onda osmislimo broj B tako što mantisu postavimo na sve jedinice (najveći broj) i damo taj eksponent koji smo našli. | |||
* w = 11, k = 5, v = 15, p = 5 | |||
* IEEE mantisa | |||
==== Broj A ==== | |||
A = 11.5<sub>10</sub> = 1011.1<sub>2</sub> = 1.'''01110''' * 2<sup>3</sup> | |||
==== Tražimo najveći eksponent ==== | |||
Tražimo najveći eksponent na koji možemo da postavimo A, a da greška u zaokruživanju ne bude veća od 1. | |||
A = 1.'''01110''' * 2<sup>3</sup> | |||
A = 0.'''10111''' 0 * 2<sup>4</sup> - Nema greške | |||
A = 0.'''01011''' 10 * 2<sup>5</sup> - Zaokružujemo tako što dodamo 1 na krajnju cifru mantise (Pravilo 3b) | |||
A<sub>z5</sub> = 0.011000 * 2<sup>5</sup>. | |||
Greška = A<sub>z5</sub> - A = (0.0110000 - 0.0101110)*2<sup>5</sup> = 0.0000010 * 2<sup>5</sup> = 0.1 | |||
Greška je manja od 1, znači možemo još. | |||
A = 0.'''00101''' 110 * 2<sup>6</sup>. | |||
Zaokružuje se pravilom 2. | |||
A<sub>z6</sub> = 0.00110 * 2<sup>6</sup> | |||
Greška = A<sub>z6</sub> - A = 0.00000010 * 2<sup>6</sup> = 0.1 | |||
Idemo dalje. | |||
A = 0.'''00010''' 1110 * 2<sup>7</sup> | |||
A<sub>z</sub> = 0.00011 * 2<sup>7</sup> (Pravilo 2) | |||
Greška = A<sub>z7</sub> - A = (0.00011 0000 - 0.00010 1110) * 2<sup>7</sup> = 0.1 | |||
Idemo dalje... | |||
A = 0.'''00001''' 01110 * 2<sup>8</sup> | |||
A<sub>z8</sub> = 0.00001 (Pravilo 1). | |||
Greška = A<sub>z8</sub> - A = (0.00001 00000 - 0.00001 01110) * 2<sup>8</sup> = 100.1 = 8.5<sub>10</sub> | |||
Sa 8 smo ga preterali, tako da je 7 najveći eksponent koji možemo da uzmemo. | |||
==== Pravimo broj B ==== | |||
Najveća mantisa je 11111, tako da broj B = 1.'''11111''' * 2<sup>7</sup> = 1111 1100 = '''252<sub>10</sub>.''' | |||
'''Odatle A + B = 11.5 + 252 = 263.5 što je najbliže 264 (A).''' | |||
(Imajte u vidu da je A sabrano sa povećanim eksponentom sa greškom 0.1<sup>2</sup> tj 0.5 tako da je pravi zbir 12 + 252 = 264 tačno na računaru) | |||
=== Pitanje 2 === | === Pitanje 2 === | ||
Na jednom računaru, realni brojevi se predstavljaju na širini od 11 bita u formatu seeeemmmmmm, gde je s bit predviđen za kodiranje predznaka broja, eeee su 4 bita za eksponent u kodu sa viškom 8, a mmmmmm su biti normalizovane matise sa skrivenim bitom (0.5≤M<1). Celi brojevi na ovom računaru se predstavljaju u drugom komplementu na širini od 7 bita. Vrednost realnog broja na lokaciji X je 32.5<sub>10</sub>. Predstava celog broja na lokaciji Y je 122<sub>8</sub>. Koji je sadržaj realne promenljive Z nakon što se na ovom računaru obavi operacija Z = X + Y? Sva zaokruživanja se obavljaju prema pravilima ANSI/IEEE standarda za realne brojeve. | ''Na jednom računaru, realni brojevi se predstavljaju na širini od 11 bita u formatu '''seeeemmmmmm''', gde je s bit predviđen za kodiranje predznaka broja, eeee su 4 bita za eksponent u kodu sa viškom 8, a mmmmmm su biti normalizovane matise sa skrivenim bitom (0.5≤M<1). Celi brojevi na ovom računaru se predstavljaju u drugom komplementu na širini od 7 bita. Vrednost realnog broja na lokaciji X je 32.5<sub>10</sub>. Predstava celog broja na lokaciji Y je 122<sub>8</sub>. Koji je sadržaj realne promenljive Z nakon što se na ovom računaru obavi operacija Z = X + Y? Sva zaokruživanja se obavljaju prema pravilima ANSI/IEEE standarda za realne brojeve.'' | ||
==== Postavka ==== | ==== Postavka ==== | ||
* w = 11, k = 4, v = 8, p = 6 | * w = 11, k = 4, v = 8, p = 6 | ||
| Ред 21: | Ред 84: | ||
Normalizujemo: | Normalizujemo: | ||
X = 10 | X = 10 0000.1 = 0.1'''000001''' * 2<sup>6</sup> | ||
==== Sabiranje ==== | ==== Sabiranje ==== | ||
| Ред 37: | Ред 100: | ||
Sastavljamo '''1 1100 101100 = 0111 0010 1100 = 72C<sub>16</sub> (A).''' | Sastavljamo '''1 1100 101100 = 0111 0010 1100 = 72C<sub>16</sub> (A).''' | ||
[[Категорија:Рокови]] | |||
[[Категорија:Програмирање 2]] | |||
Тренутна верзија на датум 30. октобар 2023. у 03:05
Prvi kolokvijum 2019. godine održan je 18. marta. Zadaci i rešenja su dostupni sa stranice predmeta.
Pitanja
Pitanje 1
Na nekom računaru, realni brojevi se predstavljaju na širini od 11 bita u formatu seeeeemmmmm, gde je s predznak broja, eeeee su 5 bitova za eksponent u kodu sa viškom 15 i mmmmm su 5 bitova normalizovane mantise sa skrivenim bitom (1≤M<2). Sva zaokruživanja se obavljaju prema pravilima ANSI/IEEE standarda za realne brojeve. Neka se u lokaciju A učita broj čija je vrednost 11.510, a u lokaciju B broj čija je vrednost najveća moguća tako da prilikom sabiranja brojeva A i B ne dođe do greške veće od 1 prilikom zaokruživanja. Kolika je vrednost zbira A i B na datom računaru?
Postavka
Ovo je malo teži zadatak. Traži se najveći broj B tako da kad se sabere sa A greška u zaokruživanju ne bude veća od 1.
Ovaj zadatak ćemo rešiti tako što predstavimo A, i povećavamo eksponent od normalizovanog dok ne dođemo do eksponenata dovoljno velikih da se mora desiti zaokruživanje. Onda računame pojedinačno grešku za svako zaokruživanje i biramo onu koja je manja od 1, a ima najveći eksponent. Onda osmislimo broj B tako što mantisu postavimo na sve jedinice (najveći broj) i damo taj eksponent koji smo našli.
- w = 11, k = 5, v = 15, p = 5
- IEEE mantisa
Broj A
A = 11.510 = 1011.12 = 1.01110 * 23
Tražimo najveći eksponent
Tražimo najveći eksponent na koji možemo da postavimo A, a da greška u zaokruživanju ne bude veća od 1.
A = 1.01110 * 23
A = 0.10111 0 * 24 - Nema greške
A = 0.01011 10 * 25 - Zaokružujemo tako što dodamo 1 na krajnju cifru mantise (Pravilo 3b)
Az5 = 0.011000 * 25. Greška = Az5 - A = (0.0110000 - 0.0101110)*25 = 0.0000010 * 25 = 0.1
Greška je manja od 1, znači možemo još.
A = 0.00101 110 * 26.
Zaokružuje se pravilom 2.
Az6 = 0.00110 * 26
Greška = Az6 - A = 0.00000010 * 26 = 0.1
Idemo dalje.
A = 0.00010 1110 * 27
Az = 0.00011 * 27 (Pravilo 2)
Greška = Az7 - A = (0.00011 0000 - 0.00010 1110) * 27 = 0.1
Idemo dalje...
A = 0.00001 01110 * 28
Az8 = 0.00001 (Pravilo 1).
Greška = Az8 - A = (0.00001 00000 - 0.00001 01110) * 28 = 100.1 = 8.510
Sa 8 smo ga preterali, tako da je 7 najveći eksponent koji možemo da uzmemo.
Pravimo broj B
Najveća mantisa je 11111, tako da broj B = 1.11111 * 27 = 1111 1100 = 25210.
Odatle A + B = 11.5 + 252 = 263.5 što je najbliže 264 (A). (Imajte u vidu da je A sabrano sa povećanim eksponentom sa greškom 0.12 tj 0.5 tako da je pravi zbir 12 + 252 = 264 tačno na računaru)
Pitanje 2
Na jednom računaru, realni brojevi se predstavljaju na širini od 11 bita u formatu seeeemmmmmm, gde je s bit predviđen za kodiranje predznaka broja, eeee su 4 bita za eksponent u kodu sa viškom 8, a mmmmmm su biti normalizovane matise sa skrivenim bitom (0.5≤M<1). Celi brojevi na ovom računaru se predstavljaju u drugom komplementu na širini od 7 bita. Vrednost realnog broja na lokaciji X je 32.510. Predstava celog broja na lokaciji Y je 1228. Koji je sadržaj realne promenljive Z nakon što se na ovom računaru obavi operacija Z = X + Y? Sva zaokruživanja se obavljaju prema pravilima ANSI/IEEE standarda za realne brojeve.
Postavka
- w = 11, k = 4, v = 8, p = 6
- VAX mantisa
Broj Y
Y = 1228 = 001 010 010 = 0101 0010.
Komplementiramo, Y = -10 1110 (-46).
Normalizujemo mantisu da bude u formatu 0.1mmmmmm.
Y = -011110 = -0.1011100 * 26. Nema zaokruživanja.
Broj X
X = 32.5 = 10 0000.1
Normalizujemo:
X = 10 0000.1 = 0.1000001 * 26
Sabiranje
Z = X + Y = 0.1000001 * 26 - 0.1011100 * 26 = -(0.1011100 * 26 - 0.1000001 * 26) = -0.0011011 * 26.
Normalizujemo.
Z = -0.1101100 * 24
Mantisa = 101100
Eksponent E = 4. e = E + v = 4 + 8 = 12 = 11002.
Znak je negativan.
Sastavljamo 1 1100 101100 = 0111 0010 1100 = 72C16 (A).