questions sur les .l,.b etc....
questions sur les .l,.b etc....
bonjour
une petite question svp :
comment sait t'on que l'on mettre :
.l ou .w ou .s ou .b
par exemple que Event.l je comprend pas pourquoi on mets .l
ou procedure.b pourquoi on mets le .b
merci me expliquer svp
une petite question svp :
comment sait t'on que l'on mettre :
.l ou .w ou .s ou .b
par exemple que Event.l je comprend pas pourquoi on mets .l
ou procedure.b pourquoi on mets le .b
merci me expliquer svp
le type de la variable (donc le .machin) peut etre déterminé par deux choses:
en premier lieu ce que tu compte en faire: certaines fonctions ne sont compatibles qu'avec certain types par exemple. Le .s correspond à string, c'est un cas particulier puis ce qu'il permet de stocker du texte. Pour le reste, elles permettent toute de stocker une valeur plus ou moins longue.
Par exemple, si tu veux faire des divisions à virgule, il te faudra utiliser des float.
en second lieu, la taille prise en mémoire: il faut toujours essayer de prendre la plus petite possible, c'est vraiment une optimisation mineur vu la ram dont on dispose aujourd'hui, mais ca coute rien en général.
Pour plus d'info, reporte toi à l'aide de pure basic.
en premier lieu ce que tu compte en faire: certaines fonctions ne sont compatibles qu'avec certain types par exemple. Le .s correspond à string, c'est un cas particulier puis ce qu'il permet de stocker du texte. Pour le reste, elles permettent toute de stocker une valeur plus ou moins longue.
Par exemple, si tu veux faire des divisions à virgule, il te faudra utiliser des float.
en second lieu, la taille prise en mémoire: il faut toujours essayer de prendre la plus petite possible, c'est vraiment une optimisation mineur vu la ram dont on dispose aujourd'hui, mais ca coute rien en général.
Pour plus d'info, reporte toi à l'aide de pure basic.
ben si tu veux stocker une valeur dans une variable
tu tiens compte de la taille de cette valeur
par exemple si tu veux stocker un chiffre de 0 a 255
un Octet suffit car les octets vont de 0 a 255 (-127 a 127)
pour la valeur 5 qui correspond a "101" en binaire
pas besoin d'une variable qui peut contenir 32 bit (a.l)
puisque tu n'a que 3 bit a garder , un octet=8 bits
donc tu pourra faire a.b=5 , le ".b" indique que la variable sera formater en 8 bits
ce qui fera en binaire que le contenu de "a.b" ressemblera a :
"00000101"
alors que a.w=5 ressemble a :
"0000000000000101"
car le ".w" demande que la variable puisse contenir 16 bit ,".w"=Word=Mot de 16 bit
si tu choisi de formater ta variable en 32 bit "a.l"
cela donnera : a.l=5
soit :
"00000000000000000000000000000101"

tu vois qu'une variable :
"a.l" prends 2 fois plus de place en memoire que "a.w"
et 4 fois plus que "a.b"
ce qui veut dire que si tu utilise des .l pour stocker des petit valeurs
non seulement tu prends plus de memoire a chaque variable
mais aussi que c'est plus long pour l'ordi d'y acceder
pour la manipulation d'adresse memoire, en general on reste en ".l"

tu tiens compte de la taille de cette valeur
par exemple si tu veux stocker un chiffre de 0 a 255
un Octet suffit car les octets vont de 0 a 255 (-127 a 127)
pour la valeur 5 qui correspond a "101" en binaire
pas besoin d'une variable qui peut contenir 32 bit (a.l)
puisque tu n'a que 3 bit a garder , un octet=8 bits
donc tu pourra faire a.b=5 , le ".b" indique que la variable sera formater en 8 bits
ce qui fera en binaire que le contenu de "a.b" ressemblera a :
"00000101"
alors que a.w=5 ressemble a :
"0000000000000101"
car le ".w" demande que la variable puisse contenir 16 bit ,".w"=Word=Mot de 16 bit
si tu choisi de formater ta variable en 32 bit "a.l"
cela donnera : a.l=5
soit :
"00000000000000000000000000000101"

tu vois qu'une variable :
"a.l" prends 2 fois plus de place en memoire que "a.w"
et 4 fois plus que "a.b"
ce qui veut dire que si tu utilise des .l pour stocker des petit valeurs
non seulement tu prends plus de memoire a chaque variable
mais aussi que c'est plus long pour l'ordi d'y acceder

pour la manipulation d'adresse memoire, en general on reste en ".l"

par exemple si tu veux faire un calcul sur 2 valeurs
5 et 3.56
5 est un entier que tu peux affecter à la variable mon_entier
cette variable tu vas la "formater" c'est à dire lui donner un encadrement mini = 0 et maxi ... 255 , 65536, 1 million...
dans l'aide de purebasic , l'écart 0 à 255 est pour les octets ( byte en anglais ) donc "b"
0..65535 est pour les mots ( word en anglais ) donc w
donc mon_entier pourra être affecté à une variable de type byte (b) ou word (w)
mon_entier.b = 5
pour 3.56, la t'a pas le choix c'est un nombre à virgule flottante ou float (f) en anglais
mon_flottant.f = 3.56
le resultat de l'addition de ces 2 valeurs sera un float
mon_resultat.f = mon_entier + mon_flottant
après rien ne t'empèche de mettre toutes tes variables en ".f" , ça "consomme" plus de mémoire, mais ça marchera quand même...
t'as compris ?
pat
5 et 3.56
5 est un entier que tu peux affecter à la variable mon_entier
cette variable tu vas la "formater" c'est à dire lui donner un encadrement mini = 0 et maxi ... 255 , 65536, 1 million...
dans l'aide de purebasic , l'écart 0 à 255 est pour les octets ( byte en anglais ) donc "b"
0..65535 est pour les mots ( word en anglais ) donc w
donc mon_entier pourra être affecté à une variable de type byte (b) ou word (w)
mon_entier.b = 5
pour 3.56, la t'a pas le choix c'est un nombre à virgule flottante ou float (f) en anglais
mon_flottant.f = 3.56
le resultat de l'addition de ces 2 valeurs sera un float
mon_resultat.f = mon_entier + mon_flottant
après rien ne t'empèche de mettre toutes tes variables en ".f" , ça "consomme" plus de mémoire, mais ça marchera quand même...
t'as compris ?
pat
Lorsque l'on fait de la programmation il faut éviter de consommer de la mémoire inutilement et donc le choix du type de variable est primordial.
Dans un code tu as besoin d'une variable pour un test vrai ou faux.
Variable = 0 ou Variable = 1 et pas autre chose. Dans ce cas de figure, c'est ridicule d'utiliser 4 octets de mémoire (.l) pour mémoriser 0 ou 1. Il est plus approprié d'utiliser 1 octet de mémoire (.b). (Idéalement les booléens deveraient être ajouter à purebasic)
Lorsque l'on dessine sur un image, la grandeur maximale est dans les 8000 X 8000 environ. Donc l'utilisation de 2 octets de mémoire (.w) est suffisant pour positionner les coordonnées des commandes de dessin.
A+
Guimauve
Dans un code tu as besoin d'une variable pour un test vrai ou faux.
Variable = 0 ou Variable = 1 et pas autre chose. Dans ce cas de figure, c'est ridicule d'utiliser 4 octets de mémoire (.l) pour mémoriser 0 ou 1. Il est plus approprié d'utiliser 1 octet de mémoire (.b). (Idéalement les booléens deveraient être ajouter à purebasic)
Lorsque l'on dessine sur un image, la grandeur maximale est dans les 8000 X 8000 environ. Donc l'utilisation de 2 octets de mémoire (.w) est suffisant pour positionner les coordonnées des commandes de dessin.
A+
Guimauve
non cela veut dire que la valeur que la procédure va retournerbernard13 a écrit :merci pour vos reponses
quand je vois ceci :
procedure.w cela veux dire que ma procédure va moins consommer ?
ne pourra pas dépasser -32768 à +32767
c'est a dire une valeur qui tiens sur 2 octets
car 16 bit (.W) = 2 octets (2*8bits)
colle cette exemple dans l'editeur et lance le en mode debugerbernard13 a écrit :desoler Dobro
mais j'ai pas compris ....
et lit les commentaires
et effectue le changement demandé, et regarde a nouveau
Code : Tout sélectionner
Procedure.b Bernard13(argument)
resultat=argument+255
ProcedureReturn resultat
EndProcedure
; cela devrai afficher 355 (100+255)
Debug Bernard13(100)
; mais cela affiche 99 !! car un .b ne peut pas contenir autre chose que -127 a 127
; et resultat sera en fait resultat.b
;355 en binaire ça donne "101100011"
;c'est a dire 9 bits !!
;hors en .b on ne peut recevoir que 8 bits !!
;si l'on prends les 8 premiers bits de 355
;cela donne "01100011" on perds le premier "1"
;et "01100011" en decimal cela donne la valeur 99
;voila pourquoi tu as 99 au lieu de 355
; change le procedure.b par procedure.w
; et reessaye ....
; cela va t'afficher 355 car resultat sera en fait resultat.w et pourra contenir la valeur 355
; car en .w on peut retenir 16 bit
; et 355 ça en occupe que 9 bits
; donc c'est bon
si tu ne comprends pas ça , arrete de chercher a apprendre la programmation
c'est manifestement pas fait pour toi ...
cherche un travaille dans les "espaces vert" , les tondeuses, c'est bien aussi
