taille en bits d'un resultat
Répondre à la discussion
Affichage des résultats 1 à 15 sur 15

taille en bits d'un resultat



  1. #1
    nadia_1988

    taille en bits d'un resultat


    ------

    bonjour tout le monde
    svp y a t il une commande en C ou en Matlab qui me calcule la taille du résultat d'une opération
    par exp : une fonction qui calcule le factoriel prend en entrée un entier "n" et retourne n!
    j'aimerai bien calculer la taille de cet "n!" en bits
    merciii

    -----

  2. #2
    BHM

    Re : taille en bits d'un resultat

    Tu veut connaitre le nombre de bits dans un contexte particulier ou de maniere generale?
    Parce qu'en C, ta valeur sera stocker selon le type de ta donnée (un entier = 4 octets) et t'aura des zéros devant.
    Sinon si tu veut connaitre le nombre bit nécessaire pour stocker un nombre, je ne connai pas de fonction, mais en faisant des divisions successive par 2 de ton entrée, tu devrait récupérer le nombre de bit, a toi de créer une fonction pour ca, et adapter en fonction des données en entrée (nombre impair par exemple).

    Exemple :
    8 / 2 = 4
    4 / 2 = 2
    2 / 2 =1
    donc 8 = 2 ^ 3
    Il te faut donc 4 (3+1) bits pour stocker 8
    Dernière modification par BHM ; 04/06/2012 à 11h26.

  3. #3
    Jack
    Modérateur

    Re : taille en bits d'un resultat

    Parce qu'en C, ta valeur sera stocker selon le type de ta donnée (un entier = 4 octets)
    Pas sur, ça dépend du compilateur.

    En fait le problème revient à déterminer le plus petit n tel que 2n > x, avec x la valeur dont on veut connaitre le nombre de bits. Ça doit bien se résoudre à coups de fonction Log tout çà

    A+

  4. #4
    lucas.gautheron

    Re : taille en bits d'un resultat

    Bonsoir,

    Il est peut être possible d'éviter les log "base 2" en employant plutôt une approche itérative de ce style :
    Code:
    int bits = 0;
    for(; n != 0; ++bits) n = n >> 1;
    (Pas testé)

    A+,

  5. A voir en vidéo sur Futura
  6. #5
    BHM

    Re : taille en bits d'un resultat

    Pas sur, ça dépend du compilateur.
    Pas faux, mais c'est quand meme le plus courant

  7. #6
    lucas.gautheron

    Re : taille en bits d'un resultat

    Citation Envoyé par BHM Voir le message
    Pas faux, mais c'est quand meme le plus courant
    Oui, mais dans ce cas, si on souhaite connaitre non pas la taille nécessaire pour stocker l'entier, mais la taille de stockage, on utilisera plutôt sizeof, non ?

    A+,

  8. #7
    BHM

    Re : taille en bits d'un resultat

    Oui, mais dans ce cas, si on souhaite connaitre non pas la taille nécessaire pour stocker l'entier, mais la taille de stockage, on utilisera plutôt sizeof, non ?
    Oui en effet, enfin il me semble, je n'ai pas fait de C depuis longtemps mais c'est plutot la représentation en mémoire qui importe plus que la taille en bit.
    Certains compilo vont coller un boolean sur un entier parce que plus facile a manipuler (il parait).

  9. #8
    Jack
    Modérateur

    Re : taille en bits d'un resultat

    Citation Envoyé par BHM Voir le message
    Pas faux, mais c'est quand meme le plus courant
    Ok, mais à partir du moment où l'on veut un code le plus portable possible, il vaut mieux éviter ce genre de supposition.

    Sur de "petits" µcontrôleurs, le type entier est plutôt sur 16 bits.

    On attend la réaction de nadia_1988 pour savoir si c'est la taille nécessaire au stockage ou le nombre effectif de bits qui est attendu ...

    A+

  10. #9
    Jack
    Modérateur

    Re : taille en bits d'un resultat

    Citation Envoyé par lucas.gautheron Voir le message
    Bonsoir,

    Il est peut être possible d'éviter les log "base 2" en employant plutôt une approche itérative de ce style :
    Code:
    int bits = 0;
    for(; n != 0; ++bits) n = n >> 1;
    (Pas testé)

    A+,
    Quelle est la valeur initiale de n?
    De plus, il me semble plus logique de rechercher à quelle place se situe le 1er bit à '1' côté poids fort pour déterminer le nombre de bits significatifs, ce qui entrainera plutôt un décalage à gauche.

    A+

  11. #10
    lucas.gautheron

    Re : taille en bits d'un resultat

    Ben n est le nombre à tester....
    L'idée c'est de le "vider" par décalages successifs vers la droite jusqu'à ce qu'il soit nul (c'est à dire que l'on ait décalé le premier bit de poids fort égale à 1, jusqu'à l'avoir éliminé)
    Si par exemple n = 0010011

    bits = 0
    n = 001001
    bits = 1
    n = 00100
    bits = 2
    n = 0010
    bits = 3
    n = 001
    bits = 4
    n = 00

    EDIT : il faut donc peut être rajouter 1 à "bits" pour obtenir le bon nombre, le code n'est peut être pas immédiatement fonctionnel, mais l'idée est là

    A+,
    Dernière modification par lucas.gautheron ; 04/06/2012 à 20h36.

  12. #11
    Jack
    Modérateur

    Re : taille en bits d'un resultat

    Ah oui, je n'avais pas vu l'astuce.

    A+

  13. #12
    jiherve

    Re : taille en bits d'un resultat

    bonsoir
    en entiers:
    une addition c'est la taille du plus grand + 1
    multiplication la somme des tailles, factorielle : la sommes des tailles aussi.
    10 bits par millier.
    JR
    l'électronique c'est pas du vaudou!

  14. #13
    nadia_1988

    Re : taille en bits d'un resultat

    bonjour tout le monde
    en fait j'utilise une machine a 32bits pour faire la compilation ,donc eventuellement la taille d'un int est égale a 4 octets
    d'autre par le factoriel de grands nombres ne peux pas être stocké dans des variable de type int sinon j'aurais un débordement de mémoire
    très rapidement .
    ma question : j'aimerais bien savoir s'il existe une fonction comme "sizeof" pour calculer la taille du résultats du calcul de factoriel
    je vous donne un exemple :

    sur ma machine a 32bits -----------> Une variable de type entier est de taille 4 octets
    DONC : la valeur max stocké dans un int = 2147483647
    12! = 479001600
    13! = 6.2270e+009

    12! < max d’ un int32 < 13 !

    ( c pas en octets :'( et j'aimerais bien savoir calculer la taille de nombres "12!" et "13!" en octets pour pouvoir faire une BONNE comparaison )
    donc impossible d’utiliser le type int pour calculer le factoriel d'un nombre supérieur a 12

    =========> je dois déterminer la limite de ma machine a 32bits et celle des machines a 8,16,64bits face au calcul de factoriel

  15. #14
    lucas.gautheron

    Re : taille en bits d'un resultat

    Bonsoir,

    Utilisez des types de variable adaptés à vos données. Il existe des bibliothèques pour gérer des très grands nombres, mais dans ce cas, je pense que le plus simple est de passer par le type double.
    (Je crois que "long int" et "long long int" ne sont pas obligatoirement stockés sur davantage de bits que les "integer" simples, d'où l'utilisation de double)

    A+,

  16. #15
    jiherve

    Re : taille en bits d'un resultat

    Bonsoir,
    un long long c'est généralement 64 bits comme un double qui est une notation flottante, la dynamique n'est cependant pas la même.
    Voir IEEE 754
    JR
    l'électronique c'est pas du vaudou!

Discussions similaires

  1. Programme 32 bits sur Windows 7 Home premium edition 64 bits
    Par invite7b1dcabe dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 10/02/2012, 18h08
  2. soustraction 16 bits,deux registres 8 bits, assembleur
    Par invite480f4512 dans le forum Électronique
    Réponses: 5
    Dernier message: 29/03/2011, 19h59
  3. Réponses: 3
    Dernier message: 22/03/2009, 13h27
  4. Réponses: 21
    Dernier message: 28/06/2008, 21h17
  5. Convertir 12 bits série en 7 bits paralléle avec un HC11 ?
    Par invite0ee134f7 dans le forum Électronique
    Réponses: 2
    Dernier message: 03/03/2005, 08h39