PDA

Prikaži potpunu verziju : Brojevni sistem


Sprocky
16.4.2012, 11:53
E ovako, nov sam na forumu i poceo sam da radim programiranje. Imam samo 12 godina. Imam knjigu Programiranje na jeziku C od Aufie Hansen, ali takodje imam i knjigu C programski jezik od Briana i Dennisa.

Prvo sam krenuo od ove prve knjige.

Poceo sam da citam i dosao do brojevnog sistema. Bitovi, decimalni BS, oktalni i heksadecimalni BS.

Na Interentu sam nasao kako da np. iz decimalne vrednosti stavim da je 142 decimalno 98 oktalno. Ali nisam nasao kako da iz oktalne stavim u decimalno.

Nasam se da ce te mi pomoci.

voodoo_
16.4.2012, 12:08
Postoji metod za direktno prebacivanje iz bilo kog u bilo koji sistem, ali je komplikovan naročito ako imaš 12 godina.

Zato bih ti preporučio da naučiš konverziju iz binarnog u dekadni i iz dekadnog u binarni. Posle toga ćeš moći lako da radiš sa oktalnim i heksadecimalnim, jer se prevođenje iz binarnog u oktalni vrši grupisanjem po tri cifre (dva na treći je osam), npr

110100101 (binarno) -> 110 100 101 -> 6 4 5 -> 645 (oktalno)

i obrnuto,

645 (oktalno) -> 6 4 5 -> 110 100 101 -> 110100101 (binarno)


Za heksadecimalni je isti princip s tim što nije grupisanje po tri nego po četiri cifre (dva na četvrti je šesnaest).

E sad, pošto znaš kakva je veza između oktalnog i binarnog, kao i heksadecimalnog i binarnog, onda još samo nauči konverziju između decimalnog i binarnog, i tada preko binarnog možeš da radiš sve konverzije. Odnosno, oktalni u decimalni ćeš raditi kao oktalni u binarni pa binarni u decimalni.

Sprocky
16.4.2012, 12:20
Hvala ti na odgovoru.
Ja znam da iz binarnog brojevnog sistema pretvorim u decimalni i obrnuto. Takodje znam da iz oktalnog stavim u decilmalno i iz heksadecimalnog u decimalni sistem. Moj probelm je to sto nenzam obrnuto da radim.

Na primer:

136 oktalno je 1*8 na 2 + 3*8 na 1 + 6*8 na 0 = 64 + 24 + 6 = 94 decimalno. Ali neznam da pretvorim:
46 decimalno u oktalno, ili 173 decimalno u heksadecimalno.

Nadam se da si me razumeo.

Ali nisam nasao kako da pretvorim iz oktalnog u binarni ili iz binarnog u oktalni ili iz binarnog u heksadecimalni ili obrnuto.

voodoo_
16.4.2012, 12:29
Evo primer za 46 decimalno u oktalno.

Radićemo 46 decimalno u binarno, pa to što dobijemo onda pretvaramo u oktalno.

46 decimalno u binarno je:

46:2 = 23 i ostatak 0
23:2 = 11 i ostatak 1
11:2 = 5 i ostatak 1
5:2 = 2 i ostatak 1
2:2 = 1 i ostatak 0
1:2 = 0 i ostatak 1

Sad ove ostatke pročitamo odozdo nagore i dobili smo binarnu reprezentaciju broja, odnosno

46 decimalno je 101110 binarno.

I onda po onom gore metodu, grupišemo po tri cifre (101 110) i to je 56 oktalno, i tako smo prebacili 46 decimalno u 56 oktalno.

----------------------------------

Primer za 173 decimalno u heksadecimalno, i to prvo u binarno, pa iz binarnog u hex:

173 : 2 = 86 i ostatak 1
86 : 2 = 43 i ostatak 0
43 : 2 = 21 i ostatak 1
21 : 2 = 10 i ostatak 1
10 : 2 = 5 i ostatak 0
5 : 2 = 2 i ostatak 1
2 : 2 = 1 i ostatak 0
1 : 2 = 0 i ostatak 1

I dobili smo da je 173 decimalno isto što i 10101101 binarno.

E sad, ovo što smo dobili grupišemo po četiri cifre. Ako nema dovoljno cifara da se formiraju grupe od po četiri, onda dopunjuješ s nulama s leve strane. Ovde imamo dovoljno, tako da je 1010 1101 binarno isto što i AD heksadecimalno.

Tako da je 173 decimalno isto što i AD u hex zapisu.

Sprocky
16.4.2012, 12:35
Hvala na objasnjenju, ali kad si 56 decimalno pretvorio u binarno, dobio si da je 56 decimalno 101110, pa kad stavimo po 3 cifre, dobjamo 101 110, ali sta treba onda da se napise ili uradi da bi saznali da je 101 110 binarnog 46 oktalno (valjda si tako napisao).
Isto vazi i za heksadecimalno.
A = 10, a
D = 13.

Za heksadecimalno i to isto ne razumem, kad sipodelio ono na 4 sifre i dobio onaj binarni broj (nisam zapamtio koj) stavio si da je to AD heksadecimalno. Ne razumem kako to.

voodoo_
16.4.2012, 12:46
Putem proste tabele:

Levo je oktalno, desno je binarno

0 = 0
1 = 1
2 = 10
3 = 11
4 = 100
5 = 101
6 = 110
7 = 111

Za heksadecimalno (desno je isto binarno)

0 = 0
1 = 1
2 = 10
3 = 11
4 = 100
5 = 101
6 = 110
7 = 111
8 = 1000
9 = 1001
A = 1010
B = 1011
C = 1100
D = 1101
E = 1110
F = 1111

Sprocky
16.4.2012, 12:50
Hvala ti puno, mnogo si mi pomogao.

Sad mi je sve jasno

Hvala ti.

Sprocky
16.4.2012, 14:44
Hvala ti sto si mi pomogao, ali imam jedan problem dok sam resavao zadatak.

Trebam da A2C heksadecimalno pretvorim u decimalno.

Mozes li mi uraditi taj zadatak (postepeno) da bih mogao da razumem kako treba da se resi.

Hvala unapred!

Sprocky
16.4.2012, 15:05
Ali imam jos jedan problem, ili sam ja nesto pogresio u racunanju ili nesto nije kako treba.

Probao sam da 836 decimalno pretvorim u binarno. Isaplo mi je 001000101, ali kad sam proverio preko programerskom digitrona, pisalo mi je da je tacan rezultat 1101000100. Stvarno neznam kako. Uzeo sam broj i stalno delio sa 2 i dobija broj koj sam opet delio sa 2 i sve tako a ostatak sam pisao i to je binarni broj.

Ako mozes da mi objasnis zasto mi nije ispalo kako treba, bio bi tu puno zahvalan.

Sun Tzu
16.4.2012, 15:27
Isaplo mi je 001000101, ali kad sam proverio preko programerskom digitrona, pisalo mi je da je tacan rezultat 1101000100. Stvarno neznam kako. Uzeo sam broj i stalno delio sa 2 i dobija broj koj sam opet delio sa 2 i sve tako a ostatak sam pisao i to je binarni broj.
Čim ti počinje broj sa 0 znači da nešto ne valja. Nikad ni decimalni ne bi zapisao 014 nego samo 14.
Proveri deljenje, možda si negde pogrešio.

836 / 2 = 418, ost. 0
418 / 2 = 209, ost. 0
209 / 2 = 104, ost. 1
104 / 2 = 52, ost. 0
52 / 2 = 26, ost. 0
26 / 2 = 13, ost. 0
13 / 2 = 6, ost. 1
6 / 2 = 3, ost. 0
3 / 2 = 1, ost. 1
1 / 2 = 0, ost. 1

dakle, 1101000100.
Trebam da A2C heksadecimalno pretvorim u decimalno.Sam si gore napisao rešenje.
136 oktalno je 1*8 na 2 + 3*8 na 1 + 6*8 na 0 = 64 + 24 + 6 = 94 decimalno. Isto tako se radi i za hex brojeve, samo ne množiš sa osnovom 8 nego 16.
Dakle imamo:

A * 16^2 + 2 * 16^1 + C * 16^0 = 10 * 256 + 2 * 16 + 12 * 1 = 2560 + 32 + 12 = 2604.

Sprocky
16.4.2012, 15:33
Hvala ti, sad sam ukapirao, zurio sam nesto pa akd sam delio nisam lepo racunao.

Hvala ti puno.

ice*91
16.4.2012, 22:56
Na primer:

136 oktalno je 1*8 na 2 + 3*8 na 1 + 6*8 na 0 = 64 + 24 + 6 = 94 decimalno. Ali neznam da pretvorim:
46 decimalno u oktalno, ili 173 decimalno u heksadecimalno.


Odgovore koje si dobio su tacni, ali ako konvertujes iz DEC u OCT ili u HEX ne moras prvo konvertovati u binarni sistem, nego mozes istim postupkom pretvarati odmah u zeljeni sistem samo sto ces umesto baze 2 uzeti bazu 8(za OCT) ili 16(za HEX)...
dacu ti primer ako ne razumes...:
94(DEC) = 136(OCT) //baza kod okt je 8 (2 na 3)

94 : 8 = 11 ostatak je 6
11 : 8 = 1 ostatak je 3
1 : 8 = 0 ostatak je 1
rezultat je broj koji dobijes citanjem ostataka od zadnjeg, znaci 136.

94(DEC) = 5E(HEX) //baza 16 (2 na 4)

94 : 16 = 5 ostatak je 14
5 : 16 = 0 ostatak je 5
rezultat se cita na isti nacin kao u predhodnom primeru, samo sto se dec broj 14 oznacava sa E u hex sistemu a broj 5 je isti i u dec i u hex sistemu, znaci 5E.

isto tako racunas i za 46(DEC) u OCT:

46 : 8 = 5(6)
5 : 8 = 0(5)
pa vazi da je 46(DEC) = 56(OCT)

dalje 173(DEC) u HEX:

173 : 16 = 10(13)
10 : 16 = 0(10)
takodje vazi da je 13(DEC)=D(HEX) i 10(DEC)=A(HEX) pa je 173(DEC) = AD(HEX)

...za pretvaranje u BIN koristis bazu 2 kao sto ti je objasnio voodoo, inace pretvaranje u BIN ili iz BIN u drugi sistem je najbitnije za znati.
Pretvaranje iz OCT u HEX ili obrnuro nije moguce na ovaj nacin. U takvim slucajevima se prvo broj iz odredjenog sistema pretvara u BIN pa se onda prevodi u treci sistem...
takodje u matematici mogu da postoje je i drugi sistemi sa razlicitim bazama, ali to je vec druga prica i "malo" komplikovanija...

Sprocky
18.4.2012, 13:59
Hvala ti puno za objasnjenje, ovo je samo brze od onog prethodnog.