Espace mémoire

Résolu
Signaler
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
-
Messages postés
4525
Date d'inscription
dimanche 29 septembre 2002
Statut
Modérateur
Dernière intervention
22 avril 2019
-
Salut à tous,

Juste une question, si je déclare une variable Boolean, prendra t'elle plus ou moins de mémoire qu'une variable Integer, variable integer qui ne prendra que 2 valeur 1 ou 0.

Merci

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]

8 réponses

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
Théorique elle ne devrait prendre que 1 bits => 8 fois moins qu'un integer.

Maintenant, il faut savoir que les processeurs allignent les espaces mémoires pour les variables sur une certaines plages (normalement 32 bits sur les proc actuels, mais apparement c'est du 16 bits... va comprendre pourquoi !).

Donc, si tu fais une petite recherche sur MSDN, tu trouve ceci :
"Boolean variables are stored as 16-bit (2-byte) numbers, but they can only be True or False. Use the keywords True and False to assign one of the two states to Boolean variables."

=> Une variable boolean est stockée sur 16 bits, alors qu'elle ne devrait prendre qu'un seul bit en mémoire ! Quel gâchi !
_______________________________________

DarK Sidious

[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
3
Messages postés
184
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
18 août 2005

vb.net vi
vb6 non
personnelement j'utilise un byte au lien de boolean ça prend moins de place et au lieu de true/false je fait 0 ou 1
3
Messages postés
4525
Date d'inscription
dimanche 29 septembre 2002
Statut
Modérateur
Dernière intervention
22 avril 2019
9
Si c'est pour une question de gain de place on peut carrement utiliser qu'1 seul bit et faire un flag en cumulant plusieurs données ex :

const FLAG_1 = 1
const FLAG_2 = 2
const FLAG_3 = 4
etc...

dim Flags as byte

'activer la valeur de flag 1 = True

Flags = Flags or FLAG_1

'desactiver la valeur de flag 1 = False

Flags = Flags and not FLAG_1

'Lire la valeur de flag 1

If (Flags and FLAG_1) = FLAG_1 Then
...
else
...
endif

En vb6 tout les nombres sont signé sauf le "byte"

@+

E.B.
3
Messages postés
4525
Date d'inscription
dimanche 29 septembre 2002
Statut
Modérateur
Dernière intervention
22 avril 2019
9
Len(Integer) = Len(Boolean)

ya pas photo que ce soit en memoire ou sur le disque

@+

E.B.
0
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
16
en déduction si une boolean est 8 fois moins grande qu'un integer, alors mon integer fait 16 * 8 bits

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
0
Messages postés
4525
Date d'inscription
dimanche 29 septembre 2002
Statut
Modérateur
Dernière intervention
22 avril 2019
9
cboulas>
Integer Boolean 2 Octets = 2 * 8 Bits = 2^16 = [0;65536] (non signé) = [- 32768,32767] (signé)

@+

E.B.
0
Messages postés
4525
Date d'inscription
dimanche 29 septembre 2002
Statut
Modérateur
Dernière intervention
22 avril 2019
9
rectification sur [0;65535]

@+

E.B.
0
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
EB : les nombres non signés existent en VB ?

_______________________________________

DarK Sidious

[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
0