[ Gojko Vujovic @ 03.01.2001. 13:24 ] @
Code: ------------------------- Hexadecimalna notacija ------------------------- Copyright(C) 1998-99. by Shang Tsung Hexadecimalni brojevi za osnovu imaju broj 16( za razliku od decimalnih kojima je osnova 10 ). E sad. Kako postoje brojevi (10) (11) ... (15) koji su u hexadecimalnoj notaciji jednocifreni koriste se slova abecede da ih zamene. Tako je : +-----------+---------------+ | Decimalno | Hexadecimalno | +-----------+---------------+ | 10 | A | | 11 | B | | 12 | C | | 13 | D | | 14 | E | | 15 | F | +-----------Á---------------+ Naravno, mogu se koristiti i mala slova. -------- Konvertovanje decimalnih brojeva u hexadecimalne ---------- Imamo npr. broj 123 decimalno. Konvertovanje se vrsi na sledeci nacin : broj-+ +osnova sistema u koji treba konvertovati doticni broj | | +--+ 123:16=7 i ostatak |11+---- najniza cifra u broju | +--+ +------+ +-+ 7:16=0 i ostatak |7+----- sledeca cifra u broju za jedan visa od +-+ predhodne Znaci 123 decimalno je 7B hexadecimalno. ( B hex. je 11 dec. ) Ovaj nacin konvertovanja brojeva vazi i ako zelis da, eto broj 123 decimalno, konvertujes u brojni sistem sa osnovom npr. 4, samo sto pri deljenju neces deliti brojem 16 nego brojem 4. Svi brojevi koji ce biti predstavljeni kao da su u nekom registru, bice u binarnom formatu (osnova sistema je 2). Slicno: +--------------+---------------+ | Decimalno | Hexadecimalno | +--------------+---------------+ | 1680 | 690 | +--------------+---------------+ | 109383 | 1AB47 | +--------------+---------------+ | 3237842 | 3167D2 | +--------------Á---------------+ E sada. Negativni brojevi se u racunaru malko drugacije predstavljaju nego u matematici. Elem. Indikator toga da li je broj negativan ili ne je najvisi bit. Kako ? Ako je najvisi bit postavljen na 1 onda je broj negativan dok je u suprotnom pozitivan. *Naravno, vrednost koju sadrzi registar mozemo tretirati i kao UNSIGNED, tj. da nema predznak sto znaci da broj ne moze biti negativan, time sto cemo i najvisi bit koristiti za skladistenje vrednosti. SIGNED je vrednost koja ima predznak tj. broj koji moze biti i negativan. Bit No. 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ Br.690h | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | ++--Á---Á---Á---Á---Á---Á---Á---Á---Á---Á---Á---Á---Á---Á---Á---+ | najvisi bit Kako bi predstavili broj -690h ? To se radi na sledeci nacin : Od broja 690h ili 1680(dec) se prvo oduzme broj 1. Znaci dobijamo ovakvu situaciju(binarnu) : +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | +---Á---Á---Á---Á---Á---Á---Á---Á---Á---Á---Á---Á---Á---Á---Á---+ I konacno se NOT-uje ceo broj tj. izvrnu se bitovi(tamo gde je bit jedan stavi se nula i obrnuto). +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | +---Á---Á---Á---Á---Á---Á---Á---Á---Á---Á---Á---Á---Á---Á---Á---+ I eto, dobili smo broj -690h. U stvari, racunarski to nije -690h(to je u matematici) vec F970h. *Broj koji sam koristio u primeru je tipa WORD. ----- Konvertovanje hexadecimalnih brojeva u decimalne ----- To se obavlja na sledeci nacin. Imamo npr. broj 690h. 690 ||| ||+najniza cifra(index 0) |+-cifra sa indexom 1 +--cifra sa indexom 2 +cifra sa najvecim indexom | +osnova +sledeca cifra | | +index | +index ... | | | | | 6 * 16^2 + 9 * 16^1 + 0 * 16^0 = 6 * 256 + 9 * 16 + 0 * 1 = 1536 + 144 + 0 = 1680 *Znak "^" oznacava stepen. Znaci 16^2 je 16 na kvadrat. Prosto, zar ne ? U slucaju negativnih brojeva uradis sve obrnuto : prvo NOT-ujes sve bitove, saberes sa 1 i uradis kao sto je objasnjeno. -----------------------KRAJ - HEXADECIMALNA NOTACIJA ---------------------- |