PROGRAMIRANJE 1.AUDITORNE VJEŽBE 31.12.2019
1. Auditorne vježbe
BINARNI BROJEVNI SUSTAV
Brojevni sustav s bazom brojanja B ima znamenke 0, 1, 2, ... , B‑1
Npr. u dekadskom sustavu B=10, a znamenke su 0, 1, 2, ..., 8 i 9.
Ako je baza B=2 dobiva se binarni brojevni sustav, čije znamenke su 0 i 1.
Iz engleskog BInary digiT nastalo je ime za najmanju količinu informacije BIT.
Primjer zapisivanja brojeva:
5710 = 5 * 101 + 7 * 100 = 1*25 + 1*24 + 1*23 + 0*22 + 0*21 + 1*20 = 1 1 1 0 0 1 2
Za binarno prikazivanje informacija je potreban najveći broj elemenata u usporedbi s ostalim prikazima, a broj bita za prikaz brojeva je iz tehničkih razloga ograničen .
Uređaji koji obrađuju i pohranjuju binarne informacije fizički se izvode pomoću elektroničkih elementa s 2 stabilna stanja (bistabil), koji su vrlo brzi i jeftini.
Pretvorba dekadskog broja u binarni
Binarni broj tvore ostaci dijeljenja s 2, odozdo prema gore
57 : 2 = 28 1 1 1 0 0 1
1
28 : 2 = 14
0
14 : 2 = 7
0
7 : 2 = 3
1
3 : 2 = 1
1
1 : 2 = 0
1
NEGATIVNI BINARNI BROJEVI
Registar je skup memorijskih elemenata koji pamte znamenke binarnog broja što znači da je za određeno računalo unaprijed propisana dužina registra, a time i brojevno područje unutar kojeg se kreću brojevi.
Primjer: Operacija 7 ‑ 5 u računalu s registrom od 4 bita obavit će se kao
7 + (‑5). Binarni prikaz broja ‑5 je sljedeći:
Pozitivni broj 0 1 0 1
Komplement do baze‑1 1 1 1 1 Komplement do baze 1 0 1 0
(jedinični komplement) ‑ 0 1 0 1 (dvojni komplement) + 0 0 0 1
1 0 1 0 1 0 1 1
Dokaz da je dobiveni broj ‑ 5 Operacija oduzimanja 7 ‑ 5
1 0 1 1 (‑ 5) 0 1 1 1 ( 7)
+ 0 1 0 1 (+5) + 1 0 1 1 (-5)
0 0 0 0 0 0 1 0
Preljev 1 Preljev 1
U registru s 3 bita, ako je prvi bit predznak mogu se prikazati sljedeći brojevi:
Dekadski broj Binarni broj
0 000
1 001
2 010
3 011
‑4 100
‑3 101
‑2 110
‑1 111
Za n = 3 dobije se interval [‑22, 22 ‑ 1],
Za n = 8 taj je interval [‑27, 27- 1 ], tj. [‑128, 127].
Općenito: [‑2n‑1, 2n‑1 ‑ 1].
Dodavanjem jedinice najvećem prikazivom cijelom broju, dobit će se najmanji prikazivi cijeli broj (npr. za n=8 , 127 + 1 -128) , odnosno oduzimanjem jedinice od najmanjeg prikazivog cijelog broja dobit će se najveći prikazivi broj (npr. za n=8 , -128 – 1 127)
OKTALNI BROJEVNI SUSTAV
Baza sustava je B=8 a znamenke su 0, 1, 2, 3, 4, 5, 6, 7.
Koristi se za skraćeno zapisivanje binarnih sadržaja kada je to spretno.
Primjer:
36‑bitni broj 001 110 000 101 111 001 010 011 111 000 100 001
oktalni ekviv. 1 6 0 5 7 1 2 3 7 0 4 1
HEKSADEKADSKI BROJEVNI SUSTAV
Baza sustava je B = 16, a znamenke su 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.
Koristi se za skraćeno zapisivanje binarnog sadržaja.
Primjer:
16‑bitni broj 0111 1011 0011 1110
heksadekadski ekviv. 7 B 3 E
RAZLOMLJENI BINARNI BROJEVI
Razlomljeni binarni brojevi sadrže "binarnu točku", analogno decimalnom zarezu, odnosno točki u anglo‑američkoj notaciji.
Primjer: prikaz razlomljenih brojeva
5.75 10 = 5 * 100 + 7 * 10‑1 + 5 * 10‑2 =
= 1*22 + 0*21 + 1*20 + 1*2‑1 + 1*2‑2 = 1 0 1 . 1 1 2
Pretvaranje decimalnog broja u binarni
Cjelobrojni dio dekadskog broja pretvara se u binarni uzastopnim dijeljenjem, a decimalni uzastopnim množenjem s 2, gdje cjelobrojni dio dobivenih produkata tvori znamenke binarnog razlomka.
1.25 = 1 + .25
.25 * 2 1 . 0 1
0.50
.5 * 2
1.0
Primjer: pretvaranje decimalnih brojeva koji se ne mogu prikazati konačnim brojem binarnih frakcija
13.3 = 13 + 0.3
. .
.3 * 2 1 1 0 1 . 0 1 0 0 1 1 0 0 1 ...
0.6
.6 * 2
1.2
.2 * 2
0.4
.4 * 2
0.8
.8 * 2
1.6
.6 * 2
1.2
....
Treba uočiti da se konačni decimalni razlomak prikazuje kao beskonačni periodički binarni razlomak.
Binarni broj se množi s potencijama baze 2 tako da se binarna točka pomakne odgovarajući broj mjesta desno ili lijevo, zavisno da li je predznak potencije pozitivan ili negativan.
Primjer: 1 . 1 1 * 22 = 1 1 1
PRIKAZ REALNIH BROJEVA U RAČUNALU
Standardna točnost: 32 bita (4 byte)
Dvostruka točnost: 64 bita (8 byte)
Realni brojevi standardne točnosti
Deklaracija u programskom jeziku C: float
IEEE (Institute of Electrical and Electronics Engineers) standard 754 za prikaz realnih brojeva u standarnoj točnosti:
31 30 23 22 0
P Karakteristika Mantisa
P
|
predznak ( P=1 negativan, P=0 pozitivan)
|
Karakteristika
|
binarni eksponent + 127 (da se izbjegne prikaz negativnog eksponenta)
|
Mantisa
|
normalizirana (samo jedan bit ispred binarne točke).
|
Primjer: prikazati dekadski broj 5.75
5.7510 = 101.112 * 20 = 1.01112 * 22
Kako se normalizacijom svakog binarnog broja (osim nule) postiže oblik 1.xxxxx, vodeća jedinica ne pohranjuje se u računalu i naziva se skrivenim bitom.
Time se štedi jedan bit što povećava točnost.
Predznak = 0 (pozitivan broj)
Binarni eksponent = 2 K = 2 + 127 = 129 = (1000 0001)2
Mantisa (cijela) 1.0111
Mantisa (bez skrivenog bita) 0111
Rezultat: 0 10000001 01110000000000000000000
ili 0100 0000 1011 1000 0000 0000 0000 0000
4 0 B 8 0 0 0 0 (heksadekadski)
Primjeri:
2 = 102 * 20 = 12 * 21 = 0100 0000 0000 0000 ... 0000 0000 = 4000 0000 hex
P = 0, K = 1 + 127 = 128 (10000000), M = (1.) 000 0000 ... 0000 0000
-2 = -102 * 20 = -12 * 21 = 1100 0000 0000 0000 ... 0000 0000 = C000 0000 hex
Jednako kao 2, ali P = 1
4 = 1002 * 20 = 12 * 22 = 0100 0000 1000 0000 ... 0000 0000 = 4080 0000 hex
Jednaka mantisa, BE = 2, K = 2 + 127 = 129 (10000001)
6 = 1102 * 20 = 1.12 * 22 = 0100 0000 1100 0000 ... 0000 0000 = 40C0 0000 hex
1 = 12 * 20 = 0011 1111 1000 0000 ... 0000 0000 = 3F80 0000 hex
K = 0 + 127 (01111111).
.75 = 0.112 * 20 = 1.12 * 2-1 = 0011 1111 0100 0000 ... 0000 0000 = 3F40 0000 hex
Poseban slučaj - 0:
Normalizacijom broja 0 ne može se dobiti oblik 1.xxxxx
0 = 0 0000000 0000 ... tj. kao 1.02 * 2-127
Raspon i točnost realnih brojeva
Za slučaj realnog broja standardne točnosti karakteristika (8 bita) se može nalaziti u intervalu [0,255].
Specijalni slučajevi karakteristike su 0 i 255, pa obzirom da je BE = K - 127, BE se može kretati u intervalu [-126,127].
Kada je K = 0 i svi bitovi mantise nula radi se o broju nula.
Kada je K = 0 i postoje binarne frakcije u mantisi tada je to denormalizirani broj, tj. više ne postoji skriveni bit.
Kada je K = 255 i svi bitovi mantise nula radi se o prikazu +∞ illi -∞ ovisno od predznaka P
Kada je K = 255 i postoje binarne frakcije u mantisi ne radi se o prikazu broja (NaN)
Najmanji pozitivni broj ¹ 0 koji se može prikazati je:
0.000000000000000000000012 *2-126 što iznosi 1.401298464324817*10-45
a najveći je:
1.111111111111111111111112 * 2127 2128 = 3.402823669209*1038
Točnost: 24 binarne znamenke
224 10x 24 log 2 x log 10 x 24 log 2 7.224719895936
tj. približno 7 prvih važećih točnih znamenki.
Prikaz pomoću brojevnog pravca:
‑3.4*1038 ‑1.4*10-45 0 1.4*10-45 3.4*1038
Numeričke pogreške
Nemogućnost korištenja svih bita kod računanja
Primjer: 0.000110 + 0.990010
0.000110 : (1.)101000110110111000101112 * 2-14
0.990010 : (1.)111110101110000101000112 * 2-1
Kod zbrajanje, binarne točke moraju biti poravnate:
.000000000000011010001101 * 20 Samo 11 od 24 bita!
+.111111010111000010100011 * 20
.111111010111011100110000 * 20 = 0,990099906921410
Realni brojevi dvostruke točnosti
Deklaracija u programskom jeziku C: double
63 62 52 51 0
P Karakteristika (11 bita) Mantisa
P
|
predznak ( P=1 negativan, P=0 pozitivan)
|
Karakteristika
|
binarni eksponent + 1023 (11 bita)
|
Mantisa
|
normalizirana (52+1 bit).
|
Raspon:
K [0,2047].
BE = K - 1023
BE [-1022,1023]
Specijalni slučajevi: K=0 i K=2047
Kada je K = 0 i svi bitovi mantise nula radi se o broju nula
Kada je K = 0 i postoje binarne frakcije u mantisi tada je to denormalizirani broj, tj. više ne postoji skriveni bit
Kada je K = 2047 i svi bitovi mantise nula radi se o prikazu +∞ ili -∞ ovisno o predznaku P
Kada je K = 2047 i postoje binarne frakcije u mantisi tada se ne radi o prikazu broja (Nan)
Najmanji pozitivni broj različit od nule koji se može prikazati je:
0.0000 ...0012 * 2-1022 što je 4.9406 * 10-324
a najveći je:
1.1111.....1111112 * 21023 21024 = 1.797693134862316*10308
Točnost: 53 binarne znamenke
253 10x 53 log 2 x log 10 x 53 log 2 15.95458977019
tj. približno 16 prvih važećih točnih znamenki.
Postoji još i long double, međutim, njegova veličina ovisi o platformi, pa se tako mogu naći implementacije u kojima je njegova veličina 64,80,96 ili 128 bita. ANSI standard propisuje da nije manji od double broja. Primjer raspodjele ako je njegova veličina 80 bita:
long double 80 bita
Karakteristika: 15 bita
Binarni eksponent: Karakteristika – 16383
Realne konstante
1. 2.34 9e-8 8.345e+25 double
2f 2.34F -1.34e5f float
1.L 2.34L -2.5e-37L long double
|