Espace mémoire

Résolu
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 - 9 oct. 2004 à 20:44
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 - 10 oct. 2004 à 14:26
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

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 129
9 oct. 2004 à 21:03
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
ShadowMaster Messages postés 184 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 18 août 2005
10 oct. 2004 à 12:18
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
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
10 oct. 2004 à 14:26
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
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
9 oct. 2004 à 21:06
Len(Integer) = Len(Boolean)

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

@+

E.B.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
9 oct. 2004 à 21:07
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
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
9 oct. 2004 à 22:50
cboulas>
Integer Boolean 2 Octets = 2 * 8 Bits = 2^16 = [0;65536] (non signé) = [- 32768,32767] (signé)

@+

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

@+

E.B.
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 129
10 oct. 2004 à 06:56
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
Rejoignez-nous