IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Type bool�en modifi�


Sujet :

C++

  1. #1
    Membre �clair� Avatar de nicolas66
    Profil pro
    �tudiant
    Inscrit en
    F�vrier 2004
    Messages
    326
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : F�vrier 2004
    Messages : 326
    Par d�faut Type bool�en modifi�
    Bonjour,

    Je voudrai savoir s'il serait possible de pouvoir cr�er un type bool�en ne prenant qu'un bit en m�moire afin d'�conomiser de la place. En effet, je me suis aper�u que le type 'bool' prenait la m�me taille en m�moire qu'un entier. Merci d'avance � ceux qui pourront m'�clairer


    Nico.

  2. #2
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Je vrois bien avoir lu ici qu'un vector< bool > �tait impl�ment� de mani�re �conomique. Mais cela doit d�pendre de l'impl�mentation...

    Quant au type bool lui-m�me, lui aussi d�pend peut-�tre de l'impl�mentation (bien qu'il y ait sans doute des contraintes de compatibilit� pour une m�me plate-forme) : le bool pourrait tr�s bien tenir dans un char...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    56
    D�tails du profil
    Informations personnelles :
    �ge : 39

    Informations forums :
    Inscription : Juin 2006
    Messages : 56
    Par d�faut
    Je vais peut etre dire une connerie, mais a tu pens� au champs de bits?
    le probl�me c'est qu'il me semble qu'il prennent quand meme un octet en m�moire, a voir...

  4. #4
    R�dacteur
    Avatar de Laurent Gomila
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut
    Est-ce que tu as r�ellement besoin d'�conomiser cette place, ou bien il s'agit juste du reflexe de programmeur "c'est pas optimum -> j'optimise" ?

  5. #5
    Membre �clair� Avatar de nicolas66
    Profil pro
    �tudiant
    Inscrit en
    F�vrier 2004
    Messages
    326
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : F�vrier 2004
    Messages : 326
    Par d�faut
    Citation Envoy� par M�dinoc
    Je vrois bien avoir lu ici qu'un vector< bool > �tait impl�ment� de mani�re �conomique. Mais cela doit d�pendre de l'impl�mentation...

    Quant au type bool lui-m�me, lui aussi d�pend peut-�tre de l'impl�mentation (bien qu'il y ait sans doute des contraintes de compatibilit� pour une m�me plate-forme) : le bool pourrait tr�s bien tenir dans un char...
    Sais-tu sur quel site je pourrai avoir plus d'informations � ce sujet ?

    Citation Envoy� par QuantuX
    Je vais peut etre dire une connerie, mais a tu pens� au champs de bits?
    le probl�me c'est qu'il me semble qu'il prennent quand meme un octet en m�moire, a voir...
    Comment ca fonctionne en gros les champs de bits ?

    Citation Envoy� par Laurent Gomila
    Est-ce que tu as r�ellement besoin d'�conomiser cette place, ou bien il s'agit juste du reflexe de programmeur "c'est pas optimum -> j'optimise" ?
    Je pense qu'il s'agit juste d'un r�flexe de programmeur mais j'aimerai bien trouver une solution � ce probl�me

  6. #6
    Membre chevronn� Avatar de Mayti4
    Inscrit en
    F�vrier 2004
    Messages
    442
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2004
    Messages : 442
    Par d�faut
    En effet, je me suis aper�u que le type 'bool' prenait la m�me taille en m�moire qu'un entier.
    Non, �a d�pend de l'impl�mentation, sizeof(bool) vaut 1 chez moi.

  7. #7
    Membre chevronn� Avatar de Rafy
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    415
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 415
    Par d�faut
    A l'heure d'aujourd'hui, les PC les plus courant poss�dent entre 512Mo et 2Go de Ram. Si un bool, prend la m�me place qu'un entier, prenons par exemple 8 octets (64 bits), alors en gros sur 512 Mo soit 536870912 octets, on peut stocker 67108864 bool, comme on est pas les seul en ram on va dire 50000000 bool....
    D�j� �a fait pas mal de bool... Et encore c'est pour 510 Mo.
    Si tu n'as pas assez de 50000000 bool dans ton programme, o� allons nous !!!!

  8. #8
    R�dacteur
    Avatar de Laurent Gomila
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut
    Je pense qu'il s'agit juste d'un r�flexe de programmeur mais j'aimerai bien trouver une solution � ce probl�me
    Sauf que �a n'en est pas un.

    D�j� pour placer un bool�en par bit, il en faut quelques uns, sinon tu n'optimises rien du tout (la taille minimum d'une variable �tant de 8 bits).

    Ensuite typiquement tu peux utiliser les champs de bits :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    struct BitField
    {
        int Bit0 : 1,
            Bit1 : 1,
            ...
    };
    Ou encore envelopper tout �a dans une classe qui utilise les op�rateurs de masque et de d�calages bits � bits. Mais c'est d�j� ce que fait (certainement) std::bitset.

  9. #9
    Membre �clair� Avatar de nicolas66
    Profil pro
    �tudiant
    Inscrit en
    F�vrier 2004
    Messages
    326
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : F�vrier 2004
    Messages : 326
    Par d�faut
    Citation Envoy� par Laurent Gomila
    Sauf que �a n'en est pas un.
    Alors pourquoi poses-tu la question si tu connais d�j� la r�ponse.

  10. #10
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 39
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par d�faut
    Attention car les champs de bits ne sont pas portable.
    De m�me des op�rateurs bitwise car la taille des variables peut changer d'une plateforme � une autre.

  11. #11
    Expert confirm�

    Inscrit en
    Novembre 2005
    Messages
    5 145
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par d�faut
    Citation Envoy� par seriousme
    Attention car les champs de bits ne sont pas portable.
    C'est un moyen portable d'essayer de r�duire la m�moire d'un objet.

    (Ce qui n'est pas portable, c'est utiliser des champs de bits pour avoir des placements en m�moire pr�cis, par exemple pour lire des fichiers o� acc�der � du hard)

    De m�me des op�rateurs bitwise car la taille des variables peut changer d'une plateforme � une autre.
    De nouveau, on peut s'en servir de mani�re parfaitement portable.

  12. #12
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 39
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par d�faut
    Oui leur portabilit� est donc relative.

Discussions similaires

  1. type bool�en dans access
    Par imeys dans le forum Access
    R�ponses: 6
    Dernier message: 19/02/2007, 21h08
  2. Myql type bool�en
    Par kitty2006 dans le forum SQL Proc�dural
    R�ponses: 2
    Dernier message: 22/08/2006, 21h48
  3. Type bool�en sous Firebird 1.5
    Par rprom1 dans le forum SQL
    R�ponses: 2
    Dernier message: 14/02/2006, 16h59
  4. type utilisateur modifier
    Par shadow31 dans le forum Windows Serveur
    R�ponses: 2
    Dernier message: 15/11/2005, 14h58
  5. Index sur une col. de type 'bool�en": utile?
    Par Atreides dans le forum Oracle
    R�ponses: 2
    Dernier message: 28/01/2005, 13h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo