III blok (tipovi podataka u Pascal-u, C/C++, asembleru), logičke operacije, logička pomeranja i rotacije

 



Mala škola HTML-a i Flash-a sa primerima

Do 5. bloka predati ličnu prezentaciju koja:

Neki tipovi podataka su s predznacima (signed) i bez predznaka (unsigned). Tipovi podataka s predznacima mogu imati pozitivne i negativne vrednosti, dok oni bez predznaka mogu imati samo pozitivne vrednosti.

Object Pascal

U tablici su prikazani tipovi u Object Pascal-u, količina memorije koju zauzimaju, i područje mogućih vrednosti.

 

Tip podatka

Veličina u byte-ovima

Područje vrednosti

ShortInt

1

-128 do 127

Byte

1

0 do 255

Char

1

0 do 255

Integer

4

-32768 do 32767

Word

2

0 do 65,535

LongInt

4

-2,147,483,648 do 2,147,483,647

Single

4

±(1.5 × 10-45 do 3.4 × 1038)

Double

8

±(5.0 × 10-324 do 1.7 × 10308)

Real

6

±(2.9 × 10-39 do 1.7 × 1038)

Extended

10

± (3.4 × 10-4932 do 1.1 × 104932)

Comp

8

-9,223,372,036,854,775,808 do 9,223,372,036,854,775,807

Boolean

1

True ili False

 

PRIORITET OPERATORA ZA RAD SA BITOVIMA u Object Pascal-u
prioritet operatori
najviši not
  and   shl   shr
  or   xor

 

PODSEĆANJE - C IDIOMI

Protumačiti sledeć izraze:

unsigned x, n;
x=x & 0177;
x=x&01;
x=x|n;
x=x|01; 
x=x & ~0177;
~0;
~0  << n;
~(~0  <<  n);

 

Karakteristike promenljivih na tipičnom 16-bitnom računaru

t i p

š i r i n a (bitovi)

opseg vrednosti

c h a r

8

sa ili bez znaka

u n s i g n e d c h a r

8

0 .. 255

s i g n e d c h a r

8

-128 .. 127

s h o r t i n t

8

-128 .. 127

u n s i g n e d s h o r t i n t

8

0 .. 255

s i g n e d s h o r t i n t

8

-128 .. 127

i n t

16

-32768 .. 32767

u n s i g n e d i n t

16

0 .. 65535

s i g n e d i n t

16

-32768 .. 32767

l o n g i n t

32

-2147483648 .. 2147483647

u n s i g n e d l o n g i n t

32

0 .. 4294967295

s i g n e d l o n g i n t

32

-2147483648 .. 2147483647

f l o a t

32

tačnost oko 6 cifara

d o u b l e

64

tačnost oko 12 cifara

l o n g d o u b l e

128

tačnost oko 24 cifara

 

PRIORITET OPERATORA ZA RAD SA BITOVIMA u C/C++
prioritet operatori
najviši ~
  <<     >>
  &
  ^
  |
  &=     ^=     |=     <<=     >>=    

 

 

Pri logičkom pomeranju sadržaj registra se tretira kao binarna reč, dok se pri aritmetičkom pomeranju sadržaj uzima kao broj, pa se vodi računa o znaku broja.
Logičko pomeranje moze biti linijsko ili ciličko. Pri linijskom pomeranju dolazi do gubitka bitova koji ispadaju iz registra, dok su pri cikličkom pomeranju svi bitovi sačuvani.

LOGIČKO LINIJSKO POMERANJE ULEVO

U ovom slučaju sadržaj registra se pomera ulevo i bit najveće težine se gubi, a u ćeliju najmanje težine se upisuje nula. Mi ćemo sva logička pomeranja posmatrati u registru (R) od n+1 ćelije sa sadržajem ynyn-1...y0 . Prikazivaćemo sadržaj registra pre i posle izvršenog pomeranja.

Pre
yn yn-1   . . .   y1 y0
  leva strela
Posle
yn-1 yn-2   . . .   y0 0

 

LOGIČKO LINIJSKO POMERANJE UDESNO

U ovom slučaju sadržaj registra se pomera udesno tako da se u ćeliju najveće težine se upisuje nula, a bit najmanje težine se gubi iz registra.

Pre
yn yn-1   . . .   y1 y0
  desna strela
Posle
0 yn   . . .   y2 y1

 

CIKLIČKO POMERANJE ULEVO

Pri cikličkom pomeranju ne dolazi do gubitka bitova iz registra. Cikličko pomeranje ulevo dovodi do prenosa bita najveće težine u ćelliju najmanje težine, a ostali bitovi se pomeraju za jedno mesto ulevo.

Pre
yn yn-1   . . .   y1 y0
 
Posle
yn-1 yn-2   . . .   y0 yn

NAPOMENA: U slučaju cikličkog pomeranja nije potrebno naglašavati da je reč o logičkom pomeranju, jer ne postoji druga vrsta cikličkog pomeranja osim logičkog pomeranja.

 

CIKLIČKO POMERANJE UDESNO

Cikličko pomeranje udesno dovodi do prenosa bita najmanje težine u ćeliju najveće težine, a ostali bitovi se pomeraju za jedno mesto udesno.

Pre
yn yn-1   . . .   y1 y0
 
Posle
y0 yn   . . .   y2 y1

 

ARITMETIČKO POMERANJE ULEVO

Aritmetičko pomeranje sadržaja registra ulevo ima efekat množenja s osnovom brojčanog sistema. Ovo pomeranje je slično logičkom linijskom pomeranju ulevo, s tim što se kontroliše nastanak prekoračenja.

Pre
C:   <--- yn+1 yn   . . .   y1 y0
  leva strela
Posle
C: yn+1 <--- yn yn-1   . . .   y0 0
Kod aritmetičkog pomeranja se mora kontrolisati nastanak prekoračenja, jer se računa da je sadržaj registra numerički podatak. Da bi se ovo realizovalo uvodi se jedna ćelija C u koju se smešta bit najveće težine. Nastanak prekoračenja se otkriva poređenjem sadržaja ćelije C i bita u ćeliji najveಿe težine registra (Rn). Ovo je prikazano u tabeli:

 

S(C) S(Rn)znakprekoračenje
0 0+ne
0 1+da
1 0-da
1 1-da

 

Kao što se vidi, znak broja je sačuvan u ćeliji C, a prekoračenje nastaje kada su bitovi ćelije C i ćelije najveće težine registra međusobno različiti.

ARITMETIČKO POMERANJE UDESNO

Aritmetičko pomeranje sadržaja registra udesno ima efekat kao deljenje s osnovom brojčanog sistema. Ovo pomeranje je slično logičkom linijskom pomeranju ulevo, s tim što sadržaj ćelije najveće težine (mesto za znak broja) ostaje sačuvan i posle izvršenog pomeranja. Pri ovom pomeranju gubi se mesto najmanje težine broja u registru.

Pre
yn+1 yn   . . .   y1 y0
  desna strela
Posle
yn+1 yn+1 yn   . . .   y2 y1

 

Bitovne operacije - primeri

Neka je u registru A smeštena vrednost (FF88)16
Neka je u registru B smeštena vrednost (1234)16

Primer 1: A AND B

Rezultat: 1200 CF: 0

 

Primer 2: A OR B

Rezultat: FFBC CF: 0

 

Primer 3: A XOR B

Rezultat: EDBC CF: 0

 

Primer 4: SHL A (logičko pomeranje ulevo za 1 bit)

Rezultat: FF10 CF: 1 (pozicija 15 ->CF, na kraju 0 na poziciji 0)

 

Primer 5: SHR A (logičko pomeranje udesno za 1 bit)

Rezultat: 7FC4 CF: 0 (0 na poziciji 15, izgubila se pozicija 0)

 

Primer 6: SAL A (aritmetičko pomeranje ulevo za 1 bit) - UPOREDITI sa SHL

Rezultat: FF10 CF: 1 (pozicija 15 ->CF, na kraju 0 na poziciji 0)

 

Primer 7: SAR A (aritmetičko pomeranje udesno za 1 bit) - UPOREDITI sa SHR

Rezultat: FFC4 CF: 1 (pozicija 15 na poziciju 15 i 14, izgubila se pozicija 0)

 

Primer 8: ROL A (cikličko pomeranje ulevo za 1 bit)

Rezultat: FF11 (pozicija 15 na poziciju 0, ostale pozicije za 1 mesto ulevo)

 

Primer 9: ROR A (cikličko pomeranje udesno za 1 bit)

Rezultat: 7FC4 (pozicija 0 na poziciju 15, ostale pozicije za 1 mesto udesno)

 

Pakovanje datuma

Predstavimo datum (m, d, g) u pakovanom obliku registru sa 16 bita: 4 bita za mesec, 5 bitova za redni broj dana, 7 bitova za godinu, npr. 10. avgust '83

REZULTAT (8553)16

 

Prosti tipovi podataka na procesorima Intel-ove arhitekture

 


e-mail: Jelena Grmuša


Copyright © 2002, Jelena Grmusa
Poslednja izmena: januar 2003.