Autor Zpráva
Jcas
Profil *
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
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 *
Č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
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 *
Děkuji za vysvětlení.
No já pro svou potřebu udělám
if($_FILES['userfile']['size']<=2097152) {}  //2MB
juriad
Profil
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á“.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: