CALCUL ORDRE DE GRANDEUR AUTOMATIQUE POUR TAILLE DE FICHIER (OCTET, KO, MO, GO,

Messages postés
399
Date d'inscription
jeudi 31 janvier 2002
Statut
Membre
Dernière intervention
6 septembre 2004
- - Dernière réponse : seyvapul
Messages postés
41
Date d'inscription
vendredi 15 juillet 2005
Statut
Membre
Dernière intervention
4 juin 2017
- 19 févr. 2008 à 17:38
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/23957-calcul-ordre-de-grandeur-automatique-pour-taille-de-fichier-octet-ko-mo-go-to

Afficher la suite 
seyvapul
Messages postés
41
Date d'inscription
vendredi 15 juillet 2005
Statut
Membre
Dernière intervention
4 juin 2017
-
Une toute petite précision concernant la norme sur les unités mémoires des machines :
1 Ko avec un K majuscule c'est 1024 octets.
1 ko avec un k minuscule c'est 1000 octets.
Au delà, ce ne sont plus des puissance de 2 qui servent de multiplicateurs.
Ainsi 1M "Méga" c'est 1000 kilo et 1G "Giga" c'est 1000 méga de même que actuellement, 1T "Téra" c'est 1000 giga.

Ainsi :
1 To = 1000*1000*1000*1024 octets.
1 Go = 1000*1000*1024 octets.
1 Mo = 1000*1024 octets.
1 Ko = 1024 octets.

Pour info, même si globalement cela n'a que peu d'importance.
cs_GRenard
Messages postés
1663
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1 -
J'ai arrangé ça, tu as raison. J'ai expliqué pourquoi dans l'Explication finale. J'ai mis un count, c'est sur que j'aurais pu mettre aussi un 4 pour améliorer la rapidité.
J'ai rajouté une fonction d'arrondissement à la virgule... Je l'avais fait il y a longtemps mais je ne l'avais pas mis à jour ici :)
Donc le chiffre que vous entrez est le nombre de chiffre après la virgule que vous voulez ou -1 si vous ne voulez pas d'arrondi.
jb_gfx
Messages postés
8
Date d'inscription
mardi 30 mars 2004
Statut
Membre
Dernière intervention
16 octobre 2006
-
Il fallait bien sûr lire :

while(($octet>=1024) && ($count < 4)) {

($count inférieur à 4).
Maudite touche majuscule... :P
jb_gfx
Messages postés
8
Date d'inscription
mardi 30 mars 2004
Statut
Membre
Dernière intervention
16 octobre 2006
-
Merci pour cette sympathique "petite" fonction.

Par contre je me permet d'ajouter une petite correction (sans doute un oubli) :

Il faut remplacer la ligne :
while($octet>=1024){

Par :
while(($octet>=1024) && ($count > 4)) {

Sinon on a une erreur d'affichage (variable non définie) et il manque l'unité si on dépasse la dizaine de Tera octects. Bon ça doit pas arriver souvent mais comme cette fonction est générique et peut être utilisée pour autre chose qu'afficher des tailles de fichiers je pense qu'il est bon de corriger (de toute façon autant faire au mieux, non?).
cs_GRenard
Messages postés
1663
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1 -
Différent de Kb et Ko ! attention à ca.
Magicking
Messages postés
195
Date d'inscription
vendredi 13 octobre 2000
Statut
Membre
Dernière intervention
8 juillet 2004
-
Je suis d'accord avec toi defkrie mais les standards sont les standards... ce n'est pas à nous qu'il faut l'expliquer...

Source:
http://www.commentcamarche.net/base/binaire.php3
http://physics.nist.gov./cuu/Units/binary.html
defkrie
Messages postés
435
Date d'inscription
vendredi 20 septembre 2002
Statut
Membre
Dernière intervention
20 novembre 2004
-
vous en avez la preuve dans presque tous les machines qui vous entourent.....
defkrie
Messages postés
435
Date d'inscription
vendredi 20 septembre 2002
Statut
Membre
Dernière intervention
20 novembre 2004
-
petit rappel d'info industriel pour les nuls
La mémoire n'est qu'un ensemble de 1 et de 0 appelés «bits». Tout comme si vous comptiez sur vos doigts, c'est probablement de là que vient le terme «digital». Lorsqu'ils sont groupés ensembles, vous pouvez en compter un grand nombre, ou représenter tous les caractères de l'alphabet (si vous utilisez un motif unique de 1 et de 0 pour représenter chaque caractère). La mémoire des ordinateurs possède un tas de ces bits (digits).

Les bits qui sont groupés par 8, sont appelés octets (byte en anglais). Chaque octet renferme une valeur entre 0 et 255, où est utilisé pour représenter un caractère de l'alphabet (ou un symbole). En regroupant des octets vous pouvez créer de gros nombres, ou des pages de caractères (mots, phrases, paragraphes, etc.).

Les octets sont groupés en kilo-octets ou «K», ce n'est pas équivalent à 1000 octets, mais presque. Ces groupements peuvent être en millions (mega-octets), milliards (giga-octets), trillions (tera-octets), quadrillons (peta-octets), et ainsi de suite.

Les gens pensent habituellement en base 10 -- 10, 100, 1000 et ainsi de suite. Alors nous utilisons ces groupements pour compter les groupements dans les ordinateurs. Cependant les ordinateurs utilisent la puissance 2 (et non pas 10). Alors le nombre le plus près de 1000 à la puissance 2 est 1024 (2 à la puissance 10). La majorité des gens arrondissent 1024 à 1000 et appellent cela 1K, mais cette erreur d'arrondissement sème la confusion. Examinez la table qui suit et voyez ce qui se passe.





Nom
La bonne manière
La manière paresseuse
Kilo-octets 2^10 = 1,024 octets 1,000 (2.4% d'erreur)

Mega-octets 2^20 = 1,048,576 octets 1,000,000 (4.8% d'erreur )

Giga-octets 2^30 = 1,073,741,824 octets 1,000,000,000 (7.4% d'erreur )

Tera-octets 2^40 = 1,099,511,627,776 octets 1,000,000,000,000 (9.9% d'erreur )

Peta-octets 2^50 = 1,125,899,906,842,674 octets 1,000,000,000,000,000 (12.6% d'erreur )


Alors souvenez-vous que 1K dans le langage des ordinateurs équivaut à 1024 octets et non pas à 1000.
cs_GRenard
Messages postés
1663
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1 -
C'est moi qui ait raison, prend n'importe quel fichier avec windows ou linux la... c'est bien 1024... bon pour etre plus précis, je pourrais changer et marquer : bytes, kb, mb, gb, tb
Magicking
Messages postés
195
Date d'inscription
vendredi 13 octobre 2000
Statut
Membre
Dernière intervention
8 juillet 2004
-
1Kilo = 1024 Octet n'est plus standard depuis 1998
Maintenant 1Kilo = 1000 Octet

C'est con mais c'est comme ça :/

Source:
http://www.commentcamarche.net/base/binaire.php3
http://physics.nist.gov./cuu/Units/binary.html
defkrie
Messages postés
435
Date d'inscription
vendredi 20 septembre 2002
Statut
Membre
Dernière intervention
20 novembre 2004
-
Je confirme un kilo fait bien 1024 octets, cest de l'informatique (revoir les bits et les puissances de deux) or certains voyant kilo ce sont dis tiens sa doit etre 1000.
frachement pas mal les gas cest les machines pensés comme cela elles auraient bien des problèmes.
Taka_s_tiger
Messages postés
32
Date d'inscription
samedi 31 janvier 2004
Statut
Membre
Dernière intervention
5 juillet 2006
-
matrey> je ne crois pas qu'il existe de "norme publique" et que c'est des gens qui ne sont pas interessé a aprendre les conventions précises, 1024 dans ce cas ci, qui ce fie au préfixe kilo ou mega..qui signifit mille ou million.
LocalStone
Messages postés
515
Date d'inscription
mercredi 19 mars 2003
Statut
Membre
Dernière intervention
1 mars 2009
-
Je crois que Matrey à raison ... Enfin quoi qu'il en soit, j'aime bien ta façon de penser les lignes du code ... C'est stupide, mais bon ... Bah voilà quoi.
LS.
++
matrey
Messages postés
399
Date d'inscription
jeudi 31 janvier 2002
Statut
Membre
Dernière intervention
6 septembre 2004
-
En théorie le kilo octet fait 1024 octets, mais il me semble si je dis pas de bétises que pour le grand public la "norme" a été arrondie à 1000... Je ne sais pas exactement ce qu'il en est actuellement...