Korisnički Kontrolni Panel
Pogledajte svoj profil
Pogledajte svoje postove
ČPP
Prijavite se

Matematički forum na kojem možete da diskutujete o raznim matematičkim oblastima, pomognete drugima oko rešavanja zadataka, a i da dobijete pomoć kada vam zatreba


















Index stranica OSTALE MATEMATIČKE OBLASTI MATEMATIKA U INFORMATICI

Pretvaranje non-integera u BIN/HEX

Brojni sistemi, Bulova algebra, binarna aritmetika itd.

Pretvaranje non-integera u BIN/HEX

Postod eseper » Utorak, 05. Februar 2013, 16:48

Broj [inlmath]279,625_{(10)}[/inlmath] pretvorite u binarni i heksadekadski.

Što se tiče ovog dijela do zareza, tu nema problema, ali kako s dijelom iza zareza? Pretpostavljam da se [inlmath]0,625[/inlmath] treba množiti s [inlmath]2[/inlmath], ali mi se rješenja ne poklapaju.
I još jedno pitanje, zbog čega kalkulator i računalo "ne daju" unijeti točku? :)

Evo kako sam izveo prvi dio za binarno:
[inlmath]:2[/inlmath]

[dispmath]{\left.\begin{array}{c|c}
279& 1\\
139& 1 \\
69& 1\\
34&0 \\
17&1 \\
8&0 \\
4&0 \\
2&0 \\
1&1
\end{array}\right.}[/dispmath]
Poslednji put menjao ubavic dana Ponedeljak, 21. Oktobar 2013, 22:23, izmenjena samo jedanput
Razlog: Prebacivanje slike u LaTex
Korisnikov avatar
eseper  OFFLINE
 
Postovi: 623
Lokacija: Split
Zahvalio se: 342 puta
Pohvaljen: 51 puta

Sharuj ovu temu na:

Share on Facebook Facebook Share on Twitter Twitter Share on MySpace MySpace Share on Google+ Google+
  • +2

Re: Pretvaranje non-integera u BIN/HEX

Postod Daniel » Utorak, 05. Februar 2013, 22:18

Prevodimo prvo u binarni, to je glavni posao, posle je iz binarnog u heksadekadni lako.

Pošto si rešio deo do zareza, i napisao ga u binarnom obliku, taj deo sad oduzimamo od broja i ostaje samo deo desno od zareza:

[inlmath]0,625[/inlmath]

I sada bi algoritam bio sledeći:
Množimo broj sa [inlmath]2[/inlmath] i ako je rezultat veći ili jednak jedinici, na odgovarajuće binarno mesto upisujemo [inlmath]1[/inlmath].
U suprotnom, normalno, upisujemo [inlmath]0[/inlmath].
Ako je rezultat množenja bio veći od [inlmath]1[/inlmath], onda od tog broja oduzimamo [inlmath]1[/inlmath].
Zatim ponavljamo ceo postupak.
Postupak se završava onda kada rezultat množenja sa [inlmath]2[/inlmath] bude tačno jednak jedinici.

Evo kako to izgleda na ovom primeru:

Broj množimo sa [inlmath]2[/inlmath]:
[inlmath]0,625\cdot 2=1,25\quad[/inlmath] rezultat množenja je veći od jedinice, upisujemo jedinicu na odgovarajuće binarno mesto:
[inlmath]100010111,1[/inlmath]
Pošto je rezultat množenja bio veći od [inlmath]1[/inlmath], od dobijenog broja oduzimamo [inlmath]1[/inlmath]:
[inlmath]1,25-1=0,25[/inlmath]
[inlmath]0,25[/inlmath] množimo sa [inlmath]2[/inlmath]:
[inlmath]0,25\cdot 2=0,5\quad[/inlmath] rezultat množenja je manji od jedinice, upisujemo nulu na odgovarajuće binarno mesto:
[inlmath]100010111,10[/inlmath]
Sada ne oduzimamo [inlmath]1[/inlmath] jer je rezultat množenja bio manji od [inlmath]1[/inlmath].
[inlmath]0,5[/inlmath] množimo sa [inlmath]2[/inlmath]:
[inlmath]0,5\cdot 2=1\quad[/inlmath] rezultat množenja je tačno jedinica, prema tome, na odgovarajuće binarno mesto zapisujemo jedinicu i završili smo postupak.
[inlmath]100010111,101[/inlmath]

Prebacivanje iz binarnog u heksadekadni zapis ide tako što se binarne cifre desno od zareza grupišu u grupe od po četiri komada i onda se svaka ta grupa zameni njoj odgovarajućom heksadekadnom cifrom. Npr. za broj

[inlmath]0,01100100101101[/inlmath]

cifre bismo grupisali ovako:

[inlmath]0,0110\; 0100\; 1011\; 0100[/inlmath]
(dodali smo dve nule s desne strane kako bismo upotpunili broj cifara u grupi do četiri)

pa bi to u heksadekadnom zapisu bio broj

[inlmath]0,64B4[/inlmath]

a u ovom našem primeru bi bilo:

[inlmath]100010111,101_2=1\;0001\;0111,1010_2=117,A_{16}[/inlmath]
I do not fear death. I had been dead for billions and billions of years before I was born, and had not suffered the slightest inconvenience from it. – Mark Twain
Korisnikov avatar
Daniel  OFFLINE
Administrator
 
Postovi: 9378
Lokacija: Beograd
Zahvalio se: 5214 puta
Pohvaljen: 4974 puta

  • +1

Re: Pretvaranje non-integera u BIN/HEX

Postod Daniel » Utorak, 05. Februar 2013, 22:28

eseper je napisao:I još jedno pitanje, zbog čega kalkulator i računalo "ne daju" unijeti točku? :)

To je veoma dobro pitanje, izgleda da im je ovaj algoritam previše komplikovan. :tongue:
I do not fear death. I had been dead for billions and billions of years before I was born, and had not suffered the slightest inconvenience from it. – Mark Twain
Korisnikov avatar
Daniel  OFFLINE
Administrator
 
Postovi: 9378
Lokacija: Beograd
Zahvalio se: 5214 puta
Pohvaljen: 4974 puta

  • +2

Re: Pretvaranje non-integera u BIN/HEX

Postod Daniel » Utorak, 05. Februar 2013, 22:55

Postoji i „trik“ koji sam baš malopre smislio, kako da izvršiš ovu konverziju bez prethodno opisanog algoritma, mada ti ga ne bih preporučio ako se od vas traži da radite po tom algoritmu.

A taj „trik“ je da ceo broj pomnožimo sa [inlmath]2^n[/inlmath], gde [inlmath]n[/inlmath] biramo tako da tim množenjem dobijemo ceo broj, ako je to moguće. Ili, ako nije moguće, onda [inlmath]n[/inlmath] biramo kao broj binarnih cifara desno od zareza koje želimo izračunati, npr. ako imamo zadatu tačnost.
Ovim množenjem, mi smo, zapravo, u binarnom formatu sve cifre pomerili za [inlmath]n[/inlmath] mesta ulevo. I biranjem broja [inlmath]n[/inlmath] takvog da bude jednak (ili veći) broju binarnih cifara desno od zareza, postići ćemo to da će se sve te cifre pomeriti levo od zareza i imaćemo ceo broj. Posle izvršenja konverzije u binarni oblik, samo sve te dobijene cifre vratimo za isto toliko mesta udesno i dobili smo rezultat.:)

Ništa ne smeta ni ako odaberemo [inlmath]n[/inlmath] veće nego što je neophodno, jer za koliko smo mesta binarne cifre pomerili ulevo, za toliko ćemo ih na kraju operacije vratiti udesno i dođe na isto.

Evo konkretno na našem primeru:

[inlmath]279,625[/inlmath] množimo nekim stepenom dvojke. Npr. sa [inlmath]2^5[/inlmath], tj. sa [inlmath]32[/inlmath]. Proverimo da li dobijamo ceo broj. Dobijamo.
Taj broj je
[inlmath]8948[/inlmath]
Sada taj broj prevodimo u binarni oblik na standardni način i dobijamo
[inlmath]10001011110100[/inlmath]
I kad sve cifre sada vratimo nadesno za [inlmath]5[/inlmath] mesta, dobijamo:
[inlmath]100010111,10100[/inlmath]
Poslednje dve nule su nam nepotrebne jer su iza zareza, tako da je traženi broj, u stvari,
[inlmath]100010111,101[/inlmath]

Prednost ovog „trika“ je i to što omogućava da sve potrebne operacije možeš obaviti i na kalkulatoru. ;)
I do not fear death. I had been dead for billions and billions of years before I was born, and had not suffered the slightest inconvenience from it. – Mark Twain
Korisnikov avatar
Daniel  OFFLINE
Administrator
 
Postovi: 9378
Lokacija: Beograd
Zahvalio se: 5214 puta
Pohvaljen: 4974 puta

Re: Pretvaranje non-integera u BIN/HEX

Postod eseper » Sreda, 06. Februar 2013, 00:36

Odličan trik, sad sam upravo pretvorbu u heksadekadski riješio na takav način. Možda nije dozvoljeno, ali će sigurno služiti za provjeru! :thumbup:
Korisnikov avatar
eseper  OFFLINE
 
Postovi: 623
Lokacija: Split
Zahvalio se: 342 puta
Pohvaljen: 51 puta

Re: Pretvaranje non-integera u BIN/HEX

Postod Daniel » Sreda, 06. Februar 2013, 01:07

Da, za pretvaranje u heksadekadni je isti princip, s jedinom razlikom što se tada ne množi s [inlmath]2^n[/inlmath], već sa [inlmath]16^n[/inlmath]... Sve ostalo je isto...
I do not fear death. I had been dead for billions and billions of years before I was born, and had not suffered the slightest inconvenience from it. – Mark Twain
Korisnikov avatar
Daniel  OFFLINE
Administrator
 
Postovi: 9378
Lokacija: Beograd
Zahvalio se: 5214 puta
Pohvaljen: 4974 puta


Povratak na MATEMATIKA U INFORMATICI

Ko je OnLine

Korisnici koji su trenutno na forumu: Nema registrovanih korisnika i 4 gostiju


Index stranicaTimObriši sve kolačiće boarda
Danas je Utorak, 22. Septembar 2026, 09:27 • Sva vremena su u UTC + 1 sat [ DST ]
Pokreće ga phpBB® Forum Software © phpBB Group
Prevod – www.CyberCom.rs