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 :

Problème de switch en C


Sujet :

C

  1. #21
    Membre éprouvé
    Avatar de Shugo78
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 119
    Par défaut
    Il est vrai que le binaire est la seul représentation possible d'un intérrupteur(transistor) qui peut prendre deux positions donc a l'époque l'octal n'était qu'une traduction du binaire pour éviter d'avoir a manipuler des chiffres binaires trop grands(telles que 0001100011101011001101011).
    En fait c'était le premier pas vers la simplification des programmes avant de coder en "anglais" on codait en octal car c'était la prmière simplification de la programmation.

  2. #22
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Shugo78
    Oui c'est vrai et d'ici à ce que l'on puisse changer le binaire pour un autre moyen alors on pourra envisager de gérer ça autrement.
    Si mes souvenirs sont exactes cela n'a pas toujours était le binaire, si ?
    il me semble que cela fonctionnait en octal à un moment, et si on est passé au binaire ce n'est pas pour le plaisir de manipuler du binaire avec des 0 et des 1.
    On vas pas faire un débat là-dessus mais c'est intéressant j'en parlerais bien pendant plus longtemps mais c'est pas le sujet original de la discussion
    Merci
    Non. Tu confonds représentation humaine et valeur interne. En interne, les valeurs sont toujours représentées en binaire. La combinaison de bits s'agrandit avec la largeur du bus :
    • 8-bit : 0-255
    • 16-bit: 0-65535
    • etc.

    Après, on peut ou non donner un sens aux bits.
    • unsigned : valeur 'pleine'
    • signé : 3 codages possibles
    • flottants : un tas de codages possibles...
    • etc.

    Enfin, mais ça n'a rien à voir, on peut choisir de représenter les valeurs en décimal, octal, hexadécimal, scientifique, virgule fixe etc.

  3. #23
    Membre éprouvé
    Avatar de Shugo78
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 119
    Par défaut
    D'accord, je comprends mieu c'est le type es variables qui déterminent le sens que l'on donne aux bits, ça me rappel mon prof d'info

    Mais malgrès tout si on à un jour internprêté les bits en octal c'est qu'il y avait une raison non ?
    Si non alors pourquoi ne pas les innterprêtés en bases 32 ?

    Citation Envoyé par koala01
    puis de l'octal à l'hexadécimal quand les bytes sont passés à 8 bits, parce que, lui aussi, permettait de représenter facilement les valeurs...
    Il me semblait que l'on utilisait l'héxadécimal car il permettait de représenter en deux chiffres toutes les possibilitées que l'on peut trouver dans un octet je crois ?

  4. #24
    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 Shugo78
    Comme l'a dit Emmanuel l'opérateur == ne fonctionne pas avec les flottants dans les conditions(il faut faire attention), par exemple :
    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
     
    include <stdlib.h>
    #include <stdio.h>
    int main()
    {
       float x=3.2155;
       if(x==3.2155)
       {
           printf("== marche même avec les flottants");
       }
       else
       {
           printf("Emmanuel avait raison cela ne marche pas avec les flottants");
       }
    }
    cela affichera la deuxième option(vous pouvez l'esayer)
    Et tu comprends pourquoi au moins? Dans ce cas-ci, ce n'est absolument pas la raison pour laquelle on déconseille d'habitude de tester l'égalité des flottants (après calculs il y a de fortes chances que les arrondis produisent des valeurs différentes), c'est que tu compares un double avec un float, qui ont des précisions différentes. En utilisant x==3.2155F, le test doit réussir.

    il faut donc mettre un seul = pour les conditions qui utilises des flottants.
    On passe d'une mécompréhension commune des flottants, à du grand n'importe quoi.

  5. #25
    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 koala01
    Un compilateur correctement réglé devrait au minimum t'avertir qu'
    une comparaison entre deux réels est toujours fausse
    Ce n'est pas vrai... C'est passer du niveau 1 de mécompréhension des flottants (ils se comportent comme les réels) au niveau 2 (il y a des règles simples qui permettent d'utiliser les flottants sans les comprendre réellement) qui est plus dangereux parce qu'on croit avoir compris.

  6. #26
    Membre éprouvé
    Avatar de Shugo78
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 119
    Par défaut
    non c'est un résidu d'un autre code qui faisait la même comparaison avec un double.
    Je reviens sur ce que j'ai dit(maintenant je suis conscient de cette erreur) le == marche pour les flottants comparés aux flottants.

    Je vais même éditer mon mesage

  7. #27
    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 koala01
    Quand on pourra envisager un autre moyen de stocker les informations que sous la forme purement binaire, on pourra commencer à envisger une gestion différente
    Tu peux détailler quelle représentation tu envisages? De mon point de vue, le problème avec les représentations de réels c'est qu'on ne peut avoir qu'un nombre fini (et relativement restreint) de valeurs possibles quand alors que les réels sont beaucoup, beaucoup plus nombreux.

  8. #28
    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 Shugo78
    Si mes souvenirs sont exactes cela n'a pas toujours était le binaire, si ?
    Il y a eu des ordinateurs décimaux et un ou deux ordinateurs ternaires.

    L'octal n'a été utilisé que comme représentation dense du binaire, comme l'est l'hexadécimal de nos jours.

  9. #29
    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 koala01
    Mais il n'y a rien à faire, on reste limité au possiblités électriques, soit le courent passe (1), soit il ne passe pas (0)... et à un fonctionnement "tout ou rien"... donc, à un foncitonnement binaire...
    Il passe dans un sens, il ne passe pas, il passe dans l'autre sens. Voilà du ternaire si tu en veux.

    Tu peux aussi jouer avec plus de deux ou trois zones de tensions.

    Le choix du binaire est pour des raisons de facilité d'implémentation -- au point qu'il est souvent plus simple et plus économique d'utiliser du binaire pour simuler d'autres bases que d'implémenter des circuits qui le font directement. Les deux techniques ont été utilisées dans les ordinateurs décimaux dont je parlais.

  10. #30
    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 Shugo78
    Il me semblait que l'on utilisait l'héxadécimal car il permettait de représenter en deux chiffres toutes les possibilitées que l'on peut trouver dans un octet je crois ?
    L'octal comme l'hexadécimal sont deux représentations denses (à la densité proche du décimal auquel nous sommes habitués) facilement convertible en binaire parce qu'un nombre entier de chiffres binaires correspond à un chiffre octal (3) ou hexadécimal (4).

    L'octal a été utilisé principalement sur les machines ayant des mots de 12, 18, 24, 36 bits, bien qu'il ait aussi été utilisé sur le PDP-11 (et voilà pourquoi en C il y a une préférence de l'octal) parce qu'avant le PDP-11 DEC avait une tradition forte de machines 18/36 bits et que la structure de l'encodage des instructions du PDP-11 utilisait des champs de 3 bits qui était directement lisible si on mettait le langage machine en octal.

  11. #31
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet
    Il passe dans un sens, il ne passe pas, il passe dans l'autre sens. Voilà du ternaire si tu en veux.

    Tu peux aussi jouer avec plus de deux ou trois zones de tensions.

    Le choix du binaire est pour des raisons de facilité d'implémentation -- au point qu'il est souvent plus simple et plus économique d'utiliser du binaire pour simuler d'autres bases que d'implémenter des circuits qui le font directement. Les deux techniques ont été utilisées dans les ordinateurs décimaux dont je parlais.
    On utilise les états plus que binaires en transmission de données. Par exemple en xDSL, c'est quaternaire : (en volts) +3 +1 -1 -3. L'intérêt est que pour une fréquence donnée, on passe 2 fois plus d'informations.

    Ca nous vaut un magnifique "diagramme de l'oeil"

  12. #32
    Membre éprouvé
    Avatar de Shugo78
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 119
    Par défaut
    Daccord je comprend mieu je savais bien que ce genre de chose avait exister.
    Mais on aurais pas un petit peu bavarder sur un sujet LEGEREMENT différent de celui de la discussion originale ?

  13. #33
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Citation Envoyé par Shugo78
    Il me semblait que l'on utilisait l'héxadécimal car il permettait de représenter en deux chiffres toutes les possibilitées que l'on peut trouver dans un octet je crois ?
    Oui, mais surtout parce que, par défaut un octet fait... 8 bits et qu'il se fait qu'on rencontre actuellement une majorité de machines, qui, justement travaillent avec des architectures basées sur un multiple de 8 bits (en fait, meme de 2 fois 4 bits )...

    Comme Jean Marc le dit, à partir du moment où on se trouve confronté à une architecture utilisant de préférence un multiple de 3 ou 6 bits, la représentation en octal est plus intéressante, car, justement, on "perdrait" certaines représentations possibles par rapport au nombre de valeurs réellement envisageables...

    Un simple exemple, en octal, tu aurais 777777 comme valeur maximale sur 18 bits, alors que tu aurais en hexa, une valeur de 3FFF, en "perdant" donc la plage allant de 4000 à FFFF...

    Citation Envoyé par Jean-Marc.Bourguet
    Tu peux détailler quelle représentation tu envisages?
    Je n'en ai, à vrai dire, aucune idée... mais s'il se fait qu'un jour on arrivait, justement, à représenter les donnée sous forme décimale au niveau interne... On gagnerait énormément en facilité de repréentation, non
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  14. #34
    Membre éprouvé
    Avatar de Shugo78
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 119
    Par défaut
    Il est vrai que l'on gagnerais énormément si on arrivais à représenter les données de manières décimales en internes, mais d'ici à ce qu'on y arrive .
    Mais il faudras bien que le binaire se retrouve face à ses limites "naturelles" tôt ou tard.

  15. #35
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par koala01
    Je n'en ai, à vrai dire, aucune idée... mais s'il se fait qu'un jour on arrivait, justement, à représenter les donnée sous forme décimale au niveau interne... On gagnerait énormément en facilité de repréentation, non
    Mais pas en simplicité de calculs... un additionneur binaire, c'est quelques portes,



    un additionneur BCD (Binary Coded Decimal / décimal codé binaire), c'est beaucoup de portes...

  16. #36
    Membre éprouvé
    Avatar de Shugo78
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 119
    Par défaut
    C'est vrai....

  17. #37
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Emmanuel, tu reste bloqué dans des considérations qui, bien qu'elles risquent d'être encore d'actualité pendant longtemps, bloquent toute réflexion...

    D'accord, ce dont je vai parler risque de ne pas arriver de si tot, mais...

    Imagine seulement un seul instant que l'on trouve un moyen de représenter les valeurs autrement que "simplement" binaires, en interne:

    Fini de penser "binaire, BCD" etc...

    On pense, naturellement, en interne, en décimal...Et là, tout un monde nouveau s'ouvre à nous

    Bon... d'ici là, tu as raison sur un point: pour l'instant, le plus économique et le plus facile reste le bon vieux "tout ou rien" binaire
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  18. #38
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par koala01
    Emmanuel, tu reste bloqué dans des considérations qui, bien qu'elles risquent d'être encore d'actualité pendant longtemps, bloquent toute réflexion...
    On sait le faire, mais ça complique énormément l'électronique qui redevient 'analogique'...

    Ca n'a aucun intérêt, on préfère régulièrement doubler la taille du bus rester en binaire. La conversion en décimale est une simple exigence humaine due à sa culture et à son nombre de doigts. (chiffre se dit digit en anglais, du latin digitus : doigt...)

    Je pense que les Cylons comprennent très bien le binaire (ou l'hexa) directement...

    et ils ont un Plan...

  19. #39
    Membre éprouvé
    Avatar de Shugo78
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 119
    Par défaut
    Qui c'est qui à trop regarder Battlestar Galactika ? C'est Emmanuel
    Une exigence humaine qui faciliterais la vie aux humains, je vous rappel au cas où vous l'auriez oubliè que c'est les humains qui controlent et cré les ordinateurs et non pas l'inverse(enfin pour l'instant , les cylons sont pas encore là)
    Donc tant que les humains créerons les ordinateurs(et que ce n'est pas l'inverse) alors les "petites exigneces humaines" auront leurs importance et leurs rôles dans la création de nouvelles choses inovantes.

  20. #40
    Membre habitué
    Inscrit en
    Février 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 10
    Par défaut les if imbriques...
    bonjour,le switch il faut utiliser des if imbriques pour voir.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. problème avec switch et valeur 0
    Par melisse dans le forum Langage
    Réponses: 12
    Dernier message: 23/02/2007, 14h20
  2. Problème fonction switch
    Par mitherkiller dans le forum C
    Réponses: 4
    Dernier message: 22/02/2007, 16h48
  3. Problème de switch-case ou de buffer ?
    Par Gilouou dans le forum C
    Réponses: 8
    Dernier message: 11/11/2006, 22h08
  4. [Cookies] problème de switch
    Par artotal dans le forum Langage
    Réponses: 1
    Dernier message: 28/12/2005, 03h35
  5. [Tableaux] Problème avec Switch case
    Par philippef dans le forum Langage
    Réponses: 4
    Dernier message: 07/09/2005, 17h37

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