Forum » Loža » kaj je to plavajoča vejica??
kaj je to plavajoča vejica??
Thomas ::
To so števila, kjer mesto decimalne vejice ni fiksno določeno.
Če bi bilo, oziroma kadar je, imamo pravzaprav opravka z računanjem s celimi števili.
S tistimi, ki so naprimer napisani v obliki eksponenta in mantise in nimajo vejice fiksne na naprimer 5. mestu od zadaj, pa je (bilo) težje računat.
Zato se je smatralo, da to je edino pravo računanje, koliko megaflopov - milijonov računskih operacij s tako formuliranimi števili - lahko izvede računalnik na sekundo.
Trenutno stane Giga flop na sekundo nekaj čez 200 US$. Če še.
p.s.
Please move topic to Z&T.
Če bi bilo, oziroma kadar je, imamo pravzaprav opravka z računanjem s celimi števili.
S tistimi, ki so naprimer napisani v obliki eksponenta in mantise in nimajo vejice fiksne na naprimer 5. mestu od zadaj, pa je (bilo) težje računat.
Zato se je smatralo, da to je edino pravo računanje, koliko megaflopov - milijonov računskih operacij s tako formuliranimi števili - lahko izvede računalnik na sekundo.
Trenutno stane Giga flop na sekundo nekaj čez 200 US$. Če še.
p.s.
Please move topic to Z&T.
Man muss immer generalisieren - Carl Jacobi
dunker ::
"Floating point" je, kolkor jest vem, čisto navadna decimalna vejica, samo da se ne piše
569,2
ampak
569'2.
Verjetno bi vejica pomenila pri programiranju nadaljevanje k naslednjemu ukazu, tega pa pač nočemo in tako uporabljamo floating point.
IMHO.
569,2
ampak
569'2.
Verjetno bi vejica pomenila pri programiranju nadaljevanje k naslednjemu ukazu, tega pa pač nočemo in tako uporabljamo floating point.
IMHO.
Thomas ::
To kar misli dunker, ni floating point ampak hanging point.
Če to hoh komo napišeš namesto navadne, se ti računalnik lahko obesi! Odtod ime - hanging point.
Mislim, da tema lepo pridobiva na pogojih, da lepo ostane v Loži.
Če to hoh komo napišeš namesto navadne, se ti računalnik lahko obesi! Odtod ime - hanging point.
Mislim, da tema lepo pridobiva na pogojih, da lepo ostane v Loži.
Man muss immer generalisieren - Carl Jacobi
Mavrik ::
Hmm, a nas niso pri matematiki učili, da je 532,5 enako 532'5 ?
The truth is rarely pure and never simple.
BigWhale ::
Banzai!
Plavajoca vejica bolj znana tudi kot plavajoca veja ali pa plavajoc hlod. To je pac en kos lesa, ki plava v vodi. Pridevnik plavajoca se je ohranil zgolj kot retoricni dodatek, saj les v veliki vecini plava, by default...
Ce plavajoco vejico voda potisne na kako obalo/obrezje iz nje nastane naplavina...
Se kaj?
Plavajoca vejica bolj znana tudi kot plavajoca veja ali pa plavajoc hlod. To je pac en kos lesa, ki plava v vodi. Pridevnik plavajoca se je ohranil zgolj kot retoricni dodatek, saj les v veliki vecini plava, by default...
Ce plavajoco vejico voda potisne na kako obalo/obrezje iz nje nastane naplavina...
Se kaj?
Sergio ::
Se bom še jaz potrudil s svojo razlago, a vedite da pišem iz glave ter da bi rad zadevo razložil na popolnoma poljuden način.
Recimo, recimo da imamo nepredznačeno 32-bitno število. To pomeni, da je število pozitivno, ter lahko predstavi vsa cela števila med 0 in 232-1, kar je precejšen obseg za navadne smrtnike.
Zaradi narave računalnikov vsa števila prezentiramo v tem načinu.
Kako torej računalniku izgleda število 8, če ga podamo v 32-bitnem načinu?
00000000000000000000000000001000
Tukaj imate 32 mest, vsako od teh lahko zasede vrednosti le 0 oziroma 1.
Dobro, tako lahko v binarnem načinu podajamo integerje, torej cela števila.
Zadeva se malce zaplete pri ne-celih šteivlih. Tukaj so se vrli znanstveniki domenili, da lahko iz e.g. 32-bitne reprezentacije naredijo celo število, in to tako, da premikajo vejico.
Podana sta torej 2 argumenta: Cela reprezentacija števila ter mesto, kjer naj stoji vejica.
Če želimo imeti število 0.08, moramo podati zgoraj omenjeno binarno reprezentacijo, ter reči sistemu, naj "postavi" vejico 2 mesti v levo. Tako bo iz števila 8 nastalo število 0.08.
Zaradi tega je vejica plavajoča, ker dejansko operiramo nad celim številom ter prosto premikljivo vejico.
Težava nastane pri številih a'la 2/3 (0.66 periodično) ter neskončnih neperiodičnih iracionalkah a'la pi, ker enostavno nimaš toliko bitov, da bi natančno predstavil to število. (0,66666666666666666666666666666666 še vedno ni točno 2/3, 3.141592653589793238462643383279502884197169399 še vedno ni pi). Zatorej bodi previden pri podajanju natančnosti številu.
Je odgovor zadovoljiv ter razumljiv? :)
Recimo, recimo da imamo nepredznačeno 32-bitno število. To pomeni, da je število pozitivno, ter lahko predstavi vsa cela števila med 0 in 232-1, kar je precejšen obseg za navadne smrtnike.
Zaradi narave računalnikov vsa števila prezentiramo v tem načinu.
Kako torej računalniku izgleda število 8, če ga podamo v 32-bitnem načinu?
00000000000000000000000000001000
Tukaj imate 32 mest, vsako od teh lahko zasede vrednosti le 0 oziroma 1.
Dobro, tako lahko v binarnem načinu podajamo integerje, torej cela števila.
Zadeva se malce zaplete pri ne-celih šteivlih. Tukaj so se vrli znanstveniki domenili, da lahko iz e.g. 32-bitne reprezentacije naredijo celo število, in to tako, da premikajo vejico.
Podana sta torej 2 argumenta: Cela reprezentacija števila ter mesto, kjer naj stoji vejica.
Če želimo imeti število 0.08, moramo podati zgoraj omenjeno binarno reprezentacijo, ter reči sistemu, naj "postavi" vejico 2 mesti v levo. Tako bo iz števila 8 nastalo število 0.08.
Zaradi tega je vejica plavajoča, ker dejansko operiramo nad celim številom ter prosto premikljivo vejico.
Težava nastane pri številih a'la 2/3 (0.66 periodično) ter neskončnih neperiodičnih iracionalkah a'la pi, ker enostavno nimaš toliko bitov, da bi natančno predstavil to število. (0,66666666666666666666666666666666 še vedno ni točno 2/3, 3.141592653589793238462643383279502884197169399 še vedno ni pi). Zatorej bodi previden pri podajanju natančnosti številu.
Je odgovor zadovoljiv ter razumljiv? :)
Tako grem jaz, tako gre vsak, kdor čuti cilj v daljavi:
če usoda ustavi mu korak,
on se ji zoperstavi.
če usoda ustavi mu korak,
on se ji zoperstavi.
Eschelon ::
Zapis s plavajočo vejico po IEEE 754 standardu (ki je najbolj razširjen).
Noben bau bau.
Noben bau bau.
Dugajs ::
Kako pa se s tem računa?
Namreč jaz sem jutri vprašan informatiko in mi ni najbolj jasno... Za nalogo smo dobili primer: 45,125(10- desetiško) in moramo spravit v plavajočo vejico. S tem primerom se ubadam že 1 uro pa mi ne uspe. Prosim če bi lahko kdo na dolgo rešil ta primer ali razložil kako je s tem.
Hvala
Namreč jaz sem jutri vprašan informatiko in mi ni najbolj jasno... Za nalogo smo dobili primer: 45,125(10- desetiško) in moramo spravit v plavajočo vejico. S tem primerom se ubadam že 1 uro pa mi ne uspe. Prosim če bi lahko kdo na dolgo rešil ta primer ali razložil kako je s tem.
Hvala
bobby ::
Če sem Sergia prou zastopu, potem 45125 zapiš kot binarno in vejico postavi za tri mesta v levo.
45125 = 1011000001000101
potem pa ker ja floatng point pride
1011000001000,101
a sem prav zastopu?
45125 = 1011000001000101
potem pa ker ja floatng point pride
1011000001000,101
a sem prav zastopu?
Ce eksplicitno ne odgovorim osebam PNG ali PR,..I dont care about your opinion.
Sergio ::
@bobby: To sem pisal dobra 4 leta nazaj... ;-)
Razlika je, ce hoces nekaj "by the way" zapisati v zapisu s plavajoco vejico, drugo je pa stvar zapisati v IEEE.754 zapisu, ki je enoznacen in standarden.
Razlika je, ce hoces nekaj "by the way" zapisati v zapisu s plavajoco vejico, drugo je pa stvar zapisati v IEEE.754 zapisu, ki je enoznacen in standarden.
Tako grem jaz, tako gre vsak, kdor čuti cilj v daljavi:
če usoda ustavi mu korak,
on se ji zoperstavi.
če usoda ustavi mu korak,
on se ji zoperstavi.
kekz ::
Če je:
1/3 = 0,3333333333333... in
2/3 = 0,6666666666666... , potem je po logiki
3/3 = 0,9999999999999...
Na cela števila, kot je v tem primeru 3/3 = 1, lahko pozabimo.
1/3 = 0,3333333333333... in
2/3 = 0,6666666666666... , potem je po logiki
3/3 = 0,9999999999999...
Na cela števila, kot je v tem primeru 3/3 = 1, lahko pozabimo.
Zgodovina sprememb…
- spremenilo: kekz ()
kekz ::
Res ste pesniki. Ali je že kdo sličal za eksponent in mantiso?
In kako bi v bin označil vejico? Od kod ti ideja, da so 3 mesta za vejico v desetiškem tudi 3 mesta v dvojiškem? Tisto za vejico je binarno ,125?
Res smo globoko v loži...
25,125 = 110001000100,101
In kako bi v bin označil vejico? Od kod ti ideja, da so 3 mesta za vejico v desetiškem tudi 3 mesta v dvojiškem? Tisto za vejico je binarno ,125?
Res smo globoko v loži...
Dugajs ::
Torej;
25,125(10) = ? (2) in pri računanju moramo uporabiti plavajočo vejico, naš profesor informatike je to razlagal sam sebi saj ga nihče ni razumel... Tak da prosim koga ki to zna da napiše
25,125(10) = ? (2) in pri računanju moramo uporabiti plavajočo vejico, naš profesor informatike je to razlagal sam sebi saj ga nihče ni razumel... Tak da prosim koga ki to zna da napiše
kekz ::
Še razlaga:
25,125= 0 10000011 10010010000000000000000
0 = predznak 0 -> +, 1 -> -
10000011 = vedno 8 bit eksponent zapisan kot razlika od "srednje" vrednosti 127. več od 127=pozitivno; 127=nič; manj od 127=negativno
10000011 = 131 = 127+4 -> to je torej 4 (pomeni 2^4)
10010010000000000000000 so decimalna mesta za vejico (binarno), celo mesto se po defaultu šteje, da je 1.
To je torej 1,1001001 binarno, kar je 1 + 1/2 + 1/16 + 1/128 = 1,5703125 (10)
In zdaj skupaj:
+ 1,5703125 * 2^4 = 25,125
25,125= 0 10000011 10010010000000000000000
0 = predznak 0 -> +, 1 -> -
10000011 = vedno 8 bit eksponent zapisan kot razlika od "srednje" vrednosti 127. več od 127=pozitivno; 127=nič; manj od 127=negativno
10000011 = 131 = 127+4 -> to je torej 4 (pomeni 2^4)
10010010000000000000000 so decimalna mesta za vejico (binarno), celo mesto se po defaultu šteje, da je 1.
To je torej 1,1001001 binarno, kar je 1 + 1/2 + 1/16 + 1/128 = 1,5703125 (10)
In zdaj skupaj:
+ 1,5703125 * 2^4 = 25,125
Zgodovina sprememb…
- spremenilo: kekz ()
Dugajs ::
"0000011 = 131 = 127+4 -> to je torej 4 (pomeni 2^4)" od kod 131??"
"10010010000000000000000 so decimalna mesta za vejico (binarno)" od kod pa tole dolgo število?
"10010010000000000000000 so decimalna mesta za vejico (binarno)" od kod pa tole dolgo število?
kekz ::
Obratni postopek:
1. Predznak je +, torej je prvi bit 0
2.
25,125 delimo z 2^n, da dobimo rezultat med med 1 in 2 (mora biti manjši od 2). To je 2^4 (drugače povedano, 4x moramo deliti z 2, da je rezultat med 1 in 2)
25,125 / 2^4 = 1,5703125
Torej je eksponent 4, kar se zapiše kot 127+4=131
(ker je 127=0, 128=1, 129=2, 130=3, 131=4)
Eksponent je zapisan z 8 biti, torej 131 = 10000011
3.
Decimalke ostanka iz prejšnje točke predstavimo binarno (celi del je vedno 1, zato ga ne rabimo zapisovati, niti vejice), samo
{,}5703125 = 1/2 + 1/16 + 1/128
To je binarno {,}1001001 in naprej do konca same ničle v dolžini 23 bitov (da je skupaj 32 bitov): 10010010000000000000000
1. Predznak je +, torej je prvi bit 0
2.
25,125 delimo z 2^n, da dobimo rezultat med med 1 in 2 (mora biti manjši od 2). To je 2^4 (drugače povedano, 4x moramo deliti z 2, da je rezultat med 1 in 2)
25,125 / 2^4 = 1,5703125
Torej je eksponent 4, kar se zapiše kot 127+4=131
(ker je 127=0, 128=1, 129=2, 130=3, 131=4)
Eksponent je zapisan z 8 biti, torej 131 = 10000011
3.
Decimalke ostanka iz prejšnje točke predstavimo binarno (celi del je vedno 1, zato ga ne rabimo zapisovati, niti vejice), samo
{,}5703125 = 1/2 + 1/16 + 1/128
To je binarno {,}1001001 in naprej do konca same ničle v dolžini 23 bitov (da je skupaj 32 bitov): 10010010000000000000000
Zgodovina sprememb…
- spremenilo: kekz ()
Dugajs ::
Zdaj razumem vse razen pri 3. točki se mi malo zalomi.. kako je lahko 5703125(10) = 1001001(2) ? Namreč jaz dobim ven: 5703125 = 10101110000010111010101(2) kje se motim?
Zgodovina sprememb…
- spremenilo: Dugajs ()
Izi ::
Še moja laična razlaga.
Število je razdeljeno na tri dele.
0 00000000 00000000000000000000000
Prvi del (ena številka) pove samo ali je število pozitivno če je 0 ali negativno če je 1
Drugi del 8 številk je eksponent. Eksponent je število, ki izraža stopnjo potence.
Tretji del 23 številk pa je Fraction oz. ulomek po slovensko.
V drugi del lahko spraviš največ 11111111 binarno, kar je enako 255 desetiško. Ampak števila ne gredo od 0 do 255 ampak od -127 do +127, zato od števila iz tega drugega dela vedno odšteješ 127.
Za drugi del vedno računaš 2^(X-127). X je tisto število v drugem delu.
Če gremo k tvojemu primeru 25,125. Številko, ki gre v drugi del je simpl dobiti. 2^5=32, kar je že več kot je tvoje število, zato greš eno nižje in 2^4=16.
Tvojo številko 25,125 ÷ 16 = 1,5703125. 16 porabiš za drugi del (8 številk), 1,5703125 pa za tretji del.
Ker je tvoje število pozitivno, je prvi del številka 0. Prvi del zaključen.
V drugi del gre 16 = 2^4 = 2^(X-127) Tale X je drugi del. Če je X-127 = 4 pomeni, da je X = 131. Torej v drugi del gre številka 131, ki jo je najprej treba spremeniti v binarno in to je 10000011
Kako 131 desetiško spremeniš v 100000011 binarno pa verjetno že veš. Tukaj je najbolje imeti en kalkulatorček, ki ti desetiško pretvarja v binarno
Potem pa moraš samo še 1,5703125 spremeniti v binarno in vse skupaj vpisati v tretji del.
1 cela je skriti bit, ki se ga ne piše ostane ti 0,5703125
Tukaj spet rabiš kalkulatorček, ampak princip gre nekako takole:
0,5703125 = 1/2 + 0/4 + 0/8 + 1/16 + 0/32 + 0/64 + 1/128 + 0/256 + ..... + 0/8388610 = (preneseš samo zgornje vrednosti ulomkov) = 10010010000000000000000
25,125 = 0 100000011 10010010000000000000000
Edit: Še odgovor na vprašanje:
kako je lahko 5703125(10) = 1001001(2) ?
kekz je malo narobe razložil
Ti ne spreminjaš 5703125 v binarno. Rezultat bi bil res 10101110000010111010101
Ti spreminjaš število 0,5703125 v binarno in to je bistvena razlika. Rezultat je 10010010000000000000000
Število je razdeljeno na tri dele.
0 00000000 00000000000000000000000
Prvi del (ena številka) pove samo ali je število pozitivno če je 0 ali negativno če je 1
Drugi del 8 številk je eksponent. Eksponent je število, ki izraža stopnjo potence.
Tretji del 23 številk pa je Fraction oz. ulomek po slovensko.
V drugi del lahko spraviš največ 11111111 binarno, kar je enako 255 desetiško. Ampak števila ne gredo od 0 do 255 ampak od -127 do +127, zato od števila iz tega drugega dela vedno odšteješ 127.
Za drugi del vedno računaš 2^(X-127). X je tisto število v drugem delu.
Če gremo k tvojemu primeru 25,125. Številko, ki gre v drugi del je simpl dobiti. 2^5=32, kar je že več kot je tvoje število, zato greš eno nižje in 2^4=16.
Tvojo številko 25,125 ÷ 16 = 1,5703125. 16 porabiš za drugi del (8 številk), 1,5703125 pa za tretji del.
Ker je tvoje število pozitivno, je prvi del številka 0. Prvi del zaključen.
V drugi del gre 16 = 2^4 = 2^(X-127) Tale X je drugi del. Če je X-127 = 4 pomeni, da je X = 131. Torej v drugi del gre številka 131, ki jo je najprej treba spremeniti v binarno in to je 10000011
Kako 131 desetiško spremeniš v 100000011 binarno pa verjetno že veš. Tukaj je najbolje imeti en kalkulatorček, ki ti desetiško pretvarja v binarno
Potem pa moraš samo še 1,5703125 spremeniti v binarno in vse skupaj vpisati v tretji del.
1 cela je skriti bit, ki se ga ne piše ostane ti 0,5703125
Tukaj spet rabiš kalkulatorček, ampak princip gre nekako takole:
0,5703125 = 1/2 + 0/4 + 0/8 + 1/16 + 0/32 + 0/64 + 1/128 + 0/256 + ..... + 0/8388610 = (preneseš samo zgornje vrednosti ulomkov) = 10010010000000000000000
25,125 = 0 100000011 10010010000000000000000
Edit: Še odgovor na vprašanje:
kako je lahko 5703125(10) = 1001001(2) ?
kekz je malo narobe razložil
Ti ne spreminjaš 5703125 v binarno. Rezultat bi bil res 10101110000010111010101
Ti spreminjaš število 0,5703125 v binarno in to je bistvena razlika. Rezultat je 10010010000000000000000
Zgodovina sprememb…
- spremenil: Izi ()
Dugajs ::
Kako pa lahko pretvoriš 0,5703125 v dvojiški sestav? Če želim to izračunati s kalkulatorjem v widowsih mi kaže da bi naj to bilo 0(2)
Zgodovina sprememb…
- spremenilo: Dugajs ()
Izi ::
kako pretvoriti 0,5703125 v binarno je že drug problem, ki ga tukaj ne bi razlagal matematično.
V principu se gre za 23 ulomkov, kot je prikazano. Kako to praktično uporabiti pri računanju brez kalkulatorja pa bo morda razložil kekz
Jaz uporabljam računalnik, ki ima to funkcijo že vnešeno in to računa samodejno
Drugače pa je tukaj kalkulator, ki celoten postopek plavajoče vejice izračuna samodejno za 32 in 64 bitov. Link
Za decimalko uporabljaj piko in ne vejice !
V principu se gre za 23 ulomkov, kot je prikazano. Kako to praktično uporabiti pri računanju brez kalkulatorja pa bo morda razložil kekz
Jaz uporabljam računalnik, ki ima to funkcijo že vnešeno in to računa samodejno
Drugače pa je tukaj kalkulator, ki celoten postopek plavajoče vejice izračuna samodejno za 32 in 64 bitov. Link
Za decimalko uporabljaj piko in ne vejice !
Obssesen ::
S temle kalkulatorjem je malo čudno, ker sam imam -10,25 za zapisat z decimalno vejico in dobim, 1 kot -, če prav razumem potem pa nule in vmes decimalna vejica. :-/
nba4 ::
no zdj mi je ži vse bol jasn
zanima me še sam za zdni del
a lahk to s kalkulatorjem na kompu izračunaš al gre sam s tem k ga je izi dau?
js sm s kalkulatorjem šou spreminjat 0,5703125 v binarno pa mi ni hotl spremenit kr 0 je napisal.. zakaj to???
zanima me še sam za zdni del
a lahk to s kalkulatorjem na kompu izračunaš al gre sam s tem k ga je izi dau?
js sm s kalkulatorjem šou spreminjat 0,5703125 v binarno pa mi ni hotl spremenit kr 0 je napisal.. zakaj to???
Zgodovina sprememb…
- spremenil: nba4 ()
Izi ::
Izgleda je nekdo manjkal pri uri spreminjanja decimalnih števil v binarna
Ali pa se danes smatra, da to že vsak otrok obvlada in v šoli tega sploh ne učijo več
Pri celih številih delimo z 2 dokler ne dobimo celotnega binarnega števila.
Pri številih manjših od 1 pa množimo z 2 dokler ne dobimo celotnega binarnega števila.
To je vse. Simpl ko pasulj in vse se da izračunati brez kalkulatorja, edino en papirček je treba imeti, da si nekam zapisuješ vse tiste ničle in enke
Kako to izgleda v praksi, če računamo na papir popolnoma brez računalnika:
V drugem delu (8-bitov) moramo število 131 pretvoriti v decimalno
131 pretvorimo v binarno z deljenjem z 2 dokler ne pridemo do 0,5
in prepisujemo ostanke.
če je ostanek 0 se prenese 0
če je ostanek 0,5 se ga pomnoži z 2 in se prenese 1
131 ÷ 2 = 65,5 ostanek je 0,5 * 2 = 1 (naprej prenesemo samo celo število 65)
65 ÷ 2 = 32,5 ostanek je 0,5 * 2 = 1
32 ÷ 2 = 16,0 ostanek je 0
16 ÷ 2 = 8,0 ostanek je 0
8 ÷ 2 = 4,0 ostanek je 0
4 ÷ 2 = 2,0 ostanek je 0
2 ÷ 2 = 1,0 ostanek je 0
1 ÷ 2 = 0,5 ostanek je 0,5 * 2 = 1
Pregledamo vse ostanke in dobimo 11000001
Končni rezultat je torej 131 desetiško je 11000001 dvojiško
----------
V tretjem delu (23-bitov) moramo število 0,5703125 pretvoriti v binarno
Decimalno število vedno množiš z 2 in v tretji del vpisuješ samo cela števila od dobljenih rezultatov.
Če je rezultat večji od 1 v tretji del vpišeš številko 1, če je manjši od 1 se vpiše 0.
Pomembno: Ker si recimo od 1,140625 odvzel 1 v naslednjo vrstico vpišeš 0,140625
0,5703125 * 2 = 1,140625 odvzameš 1
0,140625 * 2 = 0,28125 odvzameš 0
0,28125 * 2 = 0,5625 odvzameš 0
0,5625 * 2 = 1,125 odvzameš 1
0,125 * 2 = 0,25 odvzameš 0
0,25 * 2 = 0,5 odvzameš 0
0,5 * 2 = 1 odvzameš 1
Vpisuje se torej samo tisto kar smo odvzeli. Dobimo 1001001
Končni rezultat je torej 0,5703125 (decimalno) = 0,1001001 (binarno)
Ali pa se danes smatra, da to že vsak otrok obvlada in v šoli tega sploh ne učijo več
Pri celih številih delimo z 2 dokler ne dobimo celotnega binarnega števila.
Pri številih manjših od 1 pa množimo z 2 dokler ne dobimo celotnega binarnega števila.
To je vse. Simpl ko pasulj in vse se da izračunati brez kalkulatorja, edino en papirček je treba imeti, da si nekam zapisuješ vse tiste ničle in enke
Kako to izgleda v praksi, če računamo na papir popolnoma brez računalnika:
V drugem delu (8-bitov) moramo število 131 pretvoriti v decimalno
131 pretvorimo v binarno z deljenjem z 2 dokler ne pridemo do 0,5
in prepisujemo ostanke.
če je ostanek 0 se prenese 0
če je ostanek 0,5 se ga pomnoži z 2 in se prenese 1
131 ÷ 2 = 65,5 ostanek je 0,5 * 2 = 1 (naprej prenesemo samo celo število 65)
65 ÷ 2 = 32,5 ostanek je 0,5 * 2 = 1
32 ÷ 2 = 16,0 ostanek je 0
16 ÷ 2 = 8,0 ostanek je 0
8 ÷ 2 = 4,0 ostanek je 0
4 ÷ 2 = 2,0 ostanek je 0
2 ÷ 2 = 1,0 ostanek je 0
1 ÷ 2 = 0,5 ostanek je 0,5 * 2 = 1
Pregledamo vse ostanke in dobimo 11000001
Končni rezultat je torej 131 desetiško je 11000001 dvojiško
----------
V tretjem delu (23-bitov) moramo število 0,5703125 pretvoriti v binarno
Decimalno število vedno množiš z 2 in v tretji del vpisuješ samo cela števila od dobljenih rezultatov.
Če je rezultat večji od 1 v tretji del vpišeš številko 1, če je manjši od 1 se vpiše 0.
Pomembno: Ker si recimo od 1,140625 odvzel 1 v naslednjo vrstico vpišeš 0,140625
0,5703125 * 2 = 1,140625 odvzameš 1
0,140625 * 2 = 0,28125 odvzameš 0
0,28125 * 2 = 0,5625 odvzameš 0
0,5625 * 2 = 1,125 odvzameš 1
0,125 * 2 = 0,25 odvzameš 0
0,25 * 2 = 0,5 odvzameš 0
0,5 * 2 = 1 odvzameš 1
Vpisuje se torej samo tisto kar smo odvzeli. Dobimo 1001001
Končni rezultat je torej 0,5703125 (decimalno) = 0,1001001 (binarno)
Zgodovina sprememb…
- spremenil: Izi ()
blblb ::
Pregledamo vse ostanke in dobimo 11000001
Končni rezultat je torej 131 desetiško je 11000001 dvojiško
Narobe. Rezultat je 10000011 ker nicle in enice prepises od spodaj navzgor...
Lahko pa tudi tako pogledas > 128 *1 + 64*0 + 32*0 + 16*0 + 8*0 + 4*0 + 2*1 + 1*1 = 131
edit: v tvojem primeru Izi bi bil rezultat 193.
lp, blblb
Zgodovina sprememb…
- spremenil: blblb ()
Izi ::
Imaš prav, od spodaj navzgor je treba iti.
Že celo večnost nisem tako računal, ko pa imamo računalnike za take reči
Že celo večnost nisem tako računal, ko pa imamo računalnike za take reči
Enzo` ::
Eno vprasanje. Kako odstevamo v IEEE 754 standardu? Oz. kako sestejemo stevili, zapisani v tem standardu, ce je eno od teh negativno?
Mavrik ::
Števila seštevaš popolnoma normalno, s tem da moraš jasno najprej obe števili poravnati na isto mantiso.
The truth is rarely pure and never simple.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | float vs decimalOddelek: Programiranje | 6259 (4392) | Looooooka |
» | IBM-ov Mira cilja na vrh lestvice Top500Oddelek: Novice / Znanost in tehnologija | 5522 (4215) | HairyFotr |
» | C++ double _1.0000imavrednost0.99999Oddelek: Programiranje | 1580 (1333) | Spura |
» | [C] paranormalni pojavOddelek: Programiranje | 1261 (881) | snow |
» | pretvarjanje-številski sistemiOddelek: Programiranje | 2873 (2839) | Tutankhamun |