Autor | Zpráva | ||
---|---|---|---|
Jcas Profil * |
#1 · Zasláno: 13. 9. 2013, 11:52:30
Omlouvám se za trapný dotaz, ale nyní jsem trochu zmaten.
Vidím toto: 2,71 MB (2 849 355 bajtů) Znám rozdíl 1B=8b. Ale tady je obojí přeci "bajtů"??? Proč je číslo v závorce cca 140 000 větší??? Jde mi o to, že $_FILES['userfile']['size'] vrací číslo v závorce. Tak bych rád věděl kolik je:
2MB (????? bajtů) Děkuji |
||
Alphard Profil |
Ještě te tam to
M
2849355/2^20 = 2.71 Doplňuji, že to počítám, jako by to bylo MiB , dekadicky snad není třeba vysvětlovat.
Více na cs.wikipedia.org/wiki/Bajt#N.C3.A1sobky_a_u.C5.BE.C3.ADvan.C3.A9_p.C5.99edpony. |
||
juriad Profil |
#3 · Zasláno: 13. 9. 2013, 12:24:01
V dávných dřevěných dobách byly standardizovány předpony kilo jako násobek tisíce, mega jako násobek milionu.
Pak nastala doba křemíková, a jak všichni víme od von Neumana, počítače pracují ve dvojkové soustavě. Připomínám, že člověk v desítkové. A nastal problém, předpona 1000, která je pro člověka přirozená, je pro počítač divná, asi jako pro nás počítání ve dvojkové soustavě. Nejbližší přirozený ekvivalent tisíce ve dvojkové soustavě je 1024 = 2^10. Jelikož neexistovala jiná konvence, začala se v informatickém světě používat předpona kilo jako násobek 1024 a mega jako násobek 1048576. Fungovalo to, informatický svět byl docela uzavřený a všichni s touto odchylkou byli srozuměni. V dnešních dobách, kdy jsou počítače spotřební zboží, někteří začali reptat, že předpona není jednoznačná. Z toho důvodu byly zavedeny nové předpony kibi jako násobek 1024 a mebi jako násobek 1048576 (a další). Avšak, nic není sluníčkové; pořád existuje mnoho lidí, kteří nové předpony nepoužívají, třeba proto, že je neznají, a stejně tak existuje spousta staršího softwaru, který už nikdo neupraví. Nezbývá, než se s tím nepořádkem smířit a vždy se zamyslet, co tou hodnotou autor chtěl říci. Ještě jedna zajímavost. Výrobci pevných disků, respektive jejich marketingové oddělení udává velikost disků v GB/TB. Co to pro nás znamená? Koupíme si 2TB disk, tedy 2 000 000 000 000 Bytů. Ale to je jen 1.819 TiB. Kontrolní otázka, kam se těch skoro 200 giga podělo? Oni je nikdy nevyrobili. A vlastně nám ani nelhali. Neručím za historickou přesnost; pohádka je to ale myslím pěkná. |
||
Jcas Profil * |
#4 · Zasláno: 13. 9. 2013, 12:31:42 · Upravil/a: Jcas
Čtu si to už potřetí a prd tomu rozumím. Ale tabulka dole dobrá.
Budu tedy vycházet z toho, že: $_FILES['userfile']['size'] vrací MiB
1MB = 1,049MiB 1kB = 1,024KiB Juriad - už jsem to asi pochopil. Zatímco normálně počítáme 1, 2, 3, 4,......999, 1000, tak ve dvojkové soustavě se počítá 2^1, 2^2, 2^3, .......2^10, 2^11, .......2^20 Správně? a našlo se nejbližší číslo 1000(kilo), což je 1024, takže se udělalo něco jako kilo=1000(v desítkové)=1024(v dvojkové) Správně??? Stejně tak nejbližší milionu je 2^20? A nejbližší k giga je 2^30? |
||
juriad Profil |
#5 · Zasláno: 13. 9. 2013, 12:57:43
V podstatě jo.
V dvojkové se počítá stejně jako v desítkové, jen maximální číslice je 1: dvojková | desítková | mocnina 1 = 1 = 2^0, 10 = 2 = 2^1, 11 = 3, 100 = 4 = 2^2, 101 = 5, 110 = 6, 111 = 7, (všimni si, že platí: 7 = 4+2+1) 1000 = 8 = 2^3 atd. 1024 dekadicky (= 2^10) je ve dvojkové soustavě zapsáno jako 100 0000 0000 (jednička a za tím deset nul). Ano, mebi (binární ekvivalent mega) je 2^20, gibi (binární ekvivalent giga) je 2^30. Jak vidíš, tak rozdíl u 1000 a 1024 je 2.4%; u TB a TiB je to už skoro 10%. |
||
Jcas Profil * |
#6 · Zasláno: 13. 9. 2013, 14:14:23
Děkuji za vysvětlení.
No já pro svou potřebu udělám if($_FILES['userfile']['size']<=2097152) {} //2MB |
||
juriad Profil |
#7 · Zasláno: 13. 9. 2013, 16:44:40
Raději ještě tu konstantu nahraď za výpočet 2*1024*1024, pak bude na první pohled zřejmé, o co se jedná a proč je tak „divná“.
|
||
Časová prodleva: 11 let
|
0