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 :

32 bits, 64 bits.. signification


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de subzero01
    Inscrit en
    Décembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2007
    Messages : 281
    Par défaut 32 bits, 64 bits.. signification
    Bonjour,
    sur un system 32 bits (mais ordinateur 64 bits) si on execute le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    #include <iostream>
    #include <limits>
    #include <math.h>
     
    using namespace std;
     
    int main()
    {
    	double i=0;
     
    	do
    	{
    		cout<<"i="<<i<<"\t2^i="<<pow((double)2, i)<<endl;
    		i++;
    	}while(pow((double)2, i) <= numeric_limits<unsigned long double>::max());
    	cout<<endl<<endl<<"max = "<<numeric_limits<unsigned long double>::max()<<endl,
    	cin.get();
    }
    j'obitiens le resultat suivant

    - est ce que c'est normal que i va jusqu'à 1023 ? une explication sera la bienvenue.
    - où est ce que apparait le terme 32 bits, 64bits dans ce cas ?
    merci d'avance

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    et bien je dirai :

    la i s'arrete à 1023 car apres ta puissance va dépasser le max que tu affiche (donc ta boucle s'arrete).

    32 bit, 64 bit? je vois pas le rapport avec ton code en fait...

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Par défaut
    En passant, si quelqu'un peut m'expliquer ce qu'est un « unsigned long double » ? Visual 6 & 8 ont l'air de supporter ce type, ça me parait bien bizarre !

  4. #4
    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 subzero01 Voir le message
    - est ce que c'est normal que i va jusqu'à 1023 ? une explication sera la bienvenue.
    Oui, c'est l'exposant maximal dans le format flottant que tu utilises. En passant, pour tester le depassement de capacite de pow(), il faut avant l'appel remettre errno a 0 et apres tester si la valeur est toujours 0.

    - où est ce que apparait le terme 32 bits, 64bits dans ce cas ?
    Nulle part. Il y a peu de rapport entre la taille des registres d'usage general (ce a quoi correspond generalement -- il y a quelques exceptions provenant plutot de considerations markettings que techniques -- le nombre de bits d'un processeur) et les registres flottants, en particulier dans le cas d'une transition 32->64.

    Citation Envoyé par Sylvain Togni Voir le message
    En passant, si quelqu'un peut m'expliquer ce qu'est un « unsigned long double » ? Visual 6 & 8 ont l'air de supporter ce type, ça me parait bien bizarre !
    Bug ou extension de VC++.

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 699
    Par défaut long double!
    Les nombres de type long double sont codés sur 80 bits dont :
    * 64 bits pour la mantisse
    * 15 bits pour l'exposant
    * 1 bit pour le signe
    Ce qui permet d'aller de -3.4*10^^-4932 à 3.4*10^^4932
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include <iostream>
    #include <limits>
    #include <math.h>
     
    using namespace std;
     
    int main()
    {
      cout << "long double: " << numeric_limits<long double>::max() << endl;
      cout << "double : " << numeric_limits<double>::max() << endl;
    }
    sort:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ ./test
    long double: 1.18973e+4932
    double : 1.79769e+308
    -W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    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 wiztricks Voir le message
    Les nombres de type long double
    Je doute que le problème de Sylvain soit le long, je penche plutôt pour l'unsigned.

    sont codés sur 80 bits dont :
    * 64 bits pour la mantisse
    * 15 bits pour l'exposant
    * 1 bit pour le signe
    C'est loin d'être universel. Il s'agit là d'une description de l'extended double de IEEE 754 qui a l'avantage d'être disponible en hard sur les x86; mais le support est en perte de vitesse -- SSE2 ne l'a pas et c'est vers l'usage de cette interface qu'on tends. Même un unixien hard core comme moi sais que Windows ne l'utilise plus depuis des années. Et un unixien comme moi sait que certaines plateforme -- Solaris sur Sparc -- ont un long double qui fait 128 bits.

Discussions similaires

  1. bits,bytes,bit word ?
    Par Battosaiii dans le forum C
    Réponses: 2
    Dernier message: 17/03/2006, 11h29
  2. Comment lire un char bit a bit ?
    Par damien99 dans le forum C++
    Réponses: 9
    Dernier message: 02/02/2006, 21h57
  3. Lire bit par bit
    Par The_Undertaker dans le forum C++
    Réponses: 8
    Dernier message: 01/07/2005, 11h43
  4. Conversion de handles 16 bits <--> 32 bits
    Par Alcatîz dans le forum Windows
    Réponses: 6
    Dernier message: 13/12/2003, 13h40
  5. Désassemblage à la main 16 bits / 32 bits
    Par le mage tophinus dans le forum Assembleur
    Réponses: 12
    Dernier message: 19/04/2003, 00h55

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