[ nane13 @ 16.09.2006. 06:12 ] @
Eh ovako valjda sam potrefio temu a mozda i fulio... ovako imam za dva dana polazem na ciscu modul.. imam test ali naravno nisam taj dan bio na predavanju jer sam malo duze morao ostati na poslu i radi li su decimalne i binarne.. i to je ok znam iz dec u bin i bin u dec al bin u hex i dex u hex nisam skontao nikako

kako se dobiva znaci hexdecimalni broj iz decimalnog broj i binarnogg kojim redosljedom.. ako moze neki naj jednostavniji nacin.. hvala...

[ amel @ 17.09.2006. 12:32 ] @
Nane13, to ti je vrlo jednostavno. Najlakse cu ti to pokazati na jednom primjeru

Pretvaranje iz Bin u Hex:
Recimo da imamo broj u Bin:
1 0 0 1 0 1 1

Svaka ova jedinica i nula predstavljaju jedan bit.
Odvoji ovaj bin broj sa desna na lijevo crticama "|" tako da nakon svake 4 cifre (sa desna na lijevo) stoji crtica sve do kraja. Znaci

1 0 0 | 1 0 1 1

Napisi si bitove iznad svake cifre pocevsi sa desna na lijevo (1 2 4 8 | 1 2 4 8 | 1 2 4 8 ... zavisi koliki ti je bin broj. Znaci ove brojeve pises sa desna na lijevo).


Code:

4 2 1   8 4 2 1
1 0 0 | 1 0 1 1



Saberi bitove iznad "jedinica" do crte. Znaci

4 2 1
1 0 0 = 4

pa onda druga crta

8 4 2 1
1 0 1 1 = 8 + 2 + 1 = 11

Ostaju ti brojevi 4 i 11. 4 je u Hex 4 a 11 B
Rezultat je 4Bh (h je oznaka da se radi o Hex)
(Da podsjetim A = 10, B = 11, C = 12, D = 13, E = 14, F = 15)

Pretvaranje iz Hex u Bin:
Analogno,
uzet cemo isti broj u hex 4Bh

odvojimo svaku cifru "|". Znaci 4 | B
Cetri se u bin pise 1 0 0 a broj B sto je u dec jednak 11 pise se 1 0 1 1.
Rezultat je 1 0 0 | 1 0 1 1

Pretvaranje iz Dec u Hex:

Recimo da imamo broj 218 koji treba pretvoriti u Hex.
Idemo sljedecim opstupkom

Djeli rezultat uvjek sa 16 i pisi ostatke sve dok ostatak nije jednak 0.
To znaci
218 / 16 = 13
Ostatak = 10

13 / 16 = 0
Ostatak = 13

0 / 16 = 0
Ostatak = 0

Pretvori ostatke u Hex odozdo prema gore (A = 10, B = 11, C = 12, D = 13, E = 14, F = 15)
13 10 = DAh

Pretvaranje iz Hex u Dec:
Broj = DA
Podijeli "|" na D | A
D = 13
A = 10

13 (bin) = 1 1 0 1
10 (bin) = 1 0 1 0

Rezultat = 1 1 0 1 1 0 1 0
Napisi bitove sa desna na lijevo (1 2 4 8 16 32 64 ....)
Znaci

Code:

128  64   32  16    8    4  2  1
 1    1    0   1    1    0  1  0


Saberi "jedinice": 128 + 64 + 16 + 8 + 2 = 218

Nadam se da ti je jasno. Ako ne imas toga puno na Netu jednostavno Googlaj



[ Ivek33 @ 26.11.2006. 13:47 ] @
Citat:
amelPretvaranje iz Hex u Dec:
Broj = DA
Podijeli "|" na D | A
D = 13
A = 10

13 (bin) = 1 1 0 1
10 (bin) = 1 0 1 0

Rezultat = 1 1 0 1 1 0 1 0
Napisi bitove sa desna na lijevo (1 2 4 8 16 32 64 ....)
Znaci

Code:

128  64   32  16    8    4  2  1
 1    1    0   1    1    0  1  0


Saberi "jedinice": 128 + 64 + 16 + 8 + 2 = 218

@amel
malo sam zbunjen sa ovim tvojim načinom riješavanje problema HEX => DEC
moram razjasniti ovu pretvorbu C29E

upoznat sam sa ovim načinom:



ako gore navedenu konverziju radim na način kako si objasnio dobijem pogrešan rezultat?
Možeš li pojasniti gdje griješim.?



BTW: ako tvoj gornji primjer radim potenciranjem sve je OK.
[ mulaz @ 26.11.2006. 14:13 ] @
idem malkice offtopi, ali ajde

kako se pretvara float -> bin? i obrnuto? jel postoji nek jednostavan nacin, ili treba rucno pogadjanje?
znaci kako bi "12,7345" pretvorio u binarni zapis na neki jednostavan nacin (ako je uopste moguce to?)?
[ djoka_l @ 27.11.2006. 10:55 ] @
@ivek33 pogrešio si kada si binarni zapis broja pretvarao u decimalni jer si sabirao sve stepene broja dva, a ne samo one gde je u binarnom zapisu broj jedan...

@mulaz predstavljanje float brojeva u binarnom zapisu zavisi od standarda po kojem se brojevi predstavljaju. Načelno, float se sastoji od mantise i eksponenta. Razni standardi propisuju različite dužine za eksponent i mantisu. Takođe, neki standardi izostavljaju prvu jedinicu u zapisu mantise (ona se podrazumeva). Dalje, ne predstavlja svaki binarni zapis validan float broj. Standard propisuje kako se predstavlja beskonačno, a postoji i NaN (not a number) odnosno binarni zapis koji kaže da rezultat neke operacije sa float brojevima nije broj. Više o tome možeš da nađeš na wiki: http://en.wikipedia.org/wiki/Floating_point
[ Ivek33 @ 27.11.2006. 13:28 ] @
Citat:
djoka_l: @ivek33 pogrešio si kada si ........sabirao sve stepene broja dva, a ne samo one gde je u binarnom zapisu broj jedan...

sorry, ako možeš pojasniti, nisam se ovim bavio a trenutno imam slabo literature za detaljnije početke, tek sam ovo počeo proučavati
[ djoka_l @ 27.11.2006. 20:25 ] @
u binarnom zapisu broja C29E samo su bitovi na pozicijama sa težinskim faktorima 2,4,8,16,128,512,16348 i 32768 jednaki 1
Ako saberš samo te brojeve, dobićeš 49822

dakle, 49822=1*32768+1*16384+0*8192+0*4096+0*2048+0*1024+1*512+0*256+1*128+0*64+0*32+1*16+1*8+1*4+1*2+0*1
[ mulaz @ 27.11.2006. 22:19 ] @
zar nije binarni float:
abc,def = ??
naravno abcdef su 1 ili 0
[ djoka_l @ 28.11.2006. 10:25 ] @
@mulaz To što si napisao nije float nego fixed point, odnosno binarni racionalni broj sa fiksnim zarezom. Float znači plivajući, plutajući. Uobičajeni naziv je broj sa POKRETNIM zarezom. Uobičajena predstava je da je to broj oblika 1.mmm...m*2^ee...e gde su "m" bitovi koji predstavljaju mantisu a "e" bitovi koji predstavljaju eksponent. Predstava u računaru takvog broja obično kao prvi bit ima znak broja (0 pozitivni, 1 negativni), bitove eksponenta u drugom komplementu koji su pomereni za neku vrednost (da bi poređenje brojeva po veličini bilo jednostavnije) i bitove mantise gde se obično izostavlja prva jedinica. Nula se obično kodira kao float broj koji ima sve bitove 0.
[ Ivek33 @ 28.11.2006. 15:48 ] @
Citat:
djoka_l: u binarnom zapisu broja C29E samo su bitovi na pozicijama sa težinskim faktorima jednaki 1
dakle, 49822=1*32768+1*16384+0*8192+0*4096+0*2048+0*1024+1*512+0*256+1*128+0*64+0*32+1*16+1*8+1*4+1*2+0*1

TNX, ipak mi je lakše računati na način potenciranja ( bar za sada dok to malo ne proučim )
[ Ivek33 @ 02.12.2006. 11:49 ] @
Citat:
djoka_l: @ivek33 pogrešio si kada si binarni zapis broja pretvarao u decimalni jer si sabirao sve stepene broja dva, a ne samo one gde je u binarnom zapisu broj jedan...

Sada mi je jasnije, Dakle to ide ovako:
10111001...........binarno
185...................decimalno