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 :

[debutant] question en C : réduction du nbre de bits


Sujet :

C

  1. #21
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par Trap D
    Maintenant, pour récupérer lesautres bits tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int longval; // valeur à convertir sur 12 bits
    // recupération des 12 "premiers" bits
    short int val1 = (short int) (longval & 0x000007FF)
    // recupération des 12  bits suivant
    short int val2 = (short int)((longval & 0x00FF7000) >> 12);
    // recupétration des 8 derniers bits
    short int val3 = (short int)(((longval & 0xFF000000) >> 24) & 0x000000FF);
    Mais là tu ne fais que divisé la variable en 3 autres variables? ce n'est pas la question posée (en tout pas pas celle j'ai comprie!)

  2. #22
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 14
    Points : 2
    Points
    2
    Par défaut
    heu effectivement, là je ne comprends plus : .

    Je vais suivre les conseils de ggnore. C'est vrai qu'il y a surement mieux, mais c'est quand même une bonne piste...

    merci en tout cas à tous pour votre aide et à bientôt..

  3. #23
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Effectivement 2Eurocents, y'a plus simple pour le dernier
    gege2061 >> Comment veux-tu transporter autant d'informations sur 12 bits que sur 32. Ou alors je ne comprends pas son problème (que fait le convertisseur 12 bits ? )
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  4. #24
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par Trap D
    Comment veux-tu transporter autant d'informations sur 12 bits que sur 32.
    Bah c'est la question! netpit cherche un moyen de faire rentrée 32 dans 12 avec le moins de perte possible.
    Citation Envoyé par Trap D
    Ou alors je ne comprends pas son problème

  5. #25
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 14
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Trap D
    Comment veux-tu transporter autant d'informations sur 12 bits que sur 32. Ou alors je ne comprends pas son problème (que fait le convertisseur 12 bits ? )
    Oubli mon convertisseur, ça pourrait être n'importe quoi d'autre !

    effectivement je perd forcément en "qualité" mais ça n'est pas un problème (12 bits c'est bien pour mon application) . L'important dans l'affaire est de correctement convertir...

    bon je sors, à demain

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut Re: [debutant] question en C : réduction du nbre de bits
    Citation Envoyé par netpit
    une petite question toute bête : comment réduire le nombre de bits d'une variable ?
    En compressant.
    Je m'explique : j'ai un signal stocké par exemple dans une variable A codée sur 32 bits que je veux transmettre à la variable B qui elle n'a que 12 bits. Quelle traitement faire subir à A afin de diminuer sa dynamique de 32 à 12 bits en "dégradant" le moins possible mon signal ?
    Rien à voir avec le langage C...

    Il faut une table de compression, comme les tables 'Loi A / Loi µ' utilisées en téléphonie (12 bits -> 8 bits).
    Pas de Wi-Fi à la maison : CPL

  7. #27
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut Re: [debutant] question en C : réduction du nbre de bits
    Citation Envoyé par Emmanuel Delahaye
    Il faut une table de compression, comme les tables 'Loi A / Loi µ' utilisées en téléphonie (12 bits -> 8 bits).
    Comment est-ce réalisé ?
    Comment fonctionne la table de compression ? J'ai cherché sur Internet "Loi A/Loi µ'", et je n'ai rien trouvé pour ce qui est d'un codage informatique
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  8. #28
    Membre éprouvé
    Avatar de Pouic
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 669
    Points : 977
    Points
    977
    Software becomes slower faster than hardware becomes faster
    [size=1]
    http://xrenault.developpez.com

  9. #29
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Merci
    J'étudie cà !
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  10. #30
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 488
    Points : 397
    Points
    397
    Par défaut
    Bonjour,

    Je prend ce fil en cours, mais je pense qu'il manque une information essentielle pour traiter le problème : que signifie la valeur sur 32 bits, et que signifie la valeur sur 12 bits ?

    Si, comme j'en ai l'impression, ce sont tous les 2 des échantillonages linéaires sur des valeurs entières, alors la première réponse donnée est la bonne : effectuer un décalage à droite de 20 bits (équivallent à une division par 2^20).

    Sinon il faut donner l'info, la solution devrait être simple de toute façon.

    Amicalement.

  11. #31
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 14
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par sovitec
    Bonjour,

    Je prend ce fil en cours, mais je pense qu'il manque une information essentielle pour traiter le problème : que signifie la valeur sur 32 bits, et que signifie la valeur sur 12 bits ?
    La variable sur 32 bits (que j'ai appelé A) contient un signal numérique en temps réel. Par exemple une sinusoide. Je dois le convertir en analogique avec un CNA qui n'est que sur 12 bits.

    Je m'oriente pour l'instant vers un décalage vers la droite de 20 bits, permettant une division par 2^20.

    J'espère avoir répondu à ta question.

  12. #32
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 488
    Points : 397
    Points
    397
    Par défaut
    Citation Envoyé par netpit
    La variable sur 32 bits (que j'ai appelé A) contient un signal numérique en temps réel. Par exemple une sinusoide. Je dois le convertir en analogique avec un CNA qui n'est que sur 12 bits.

    J'espère avoir répondu à ta question.
    En fait ma question était : quels sont les formats des variables ?

    Pour la variable 32 bits : est ce un entier signé ? un entier non signé ? un flottant ? Représente t-il un échantillonage linéaire ? logarithmique ?

    De même pour la variable 12 bits : est-ce une vraie variable 12 bits ? une variable 16/32 bits dont on ne prend en compte que les 12 bits de poid faible ? les 12 bits de poid fort ? Quel type d'échantillonage ? ...

  13. #33
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    On ne pourrait faire une simple règle de trois ?
    la valeur divisée par le max sur 32 bits, multipliée par le max sur 12 bits ?
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  14. #34
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Citation Envoyé par Trap D
    On ne pourrait faire une simple règle de trois ?
    la valeur divisée par le max sur 32 bits, multipliée par le max sur 12 bits ?
    Ouh la ... si on est en entiers, on fait un "underflow" avec la première division et tout est à 0.

    Si l'on accepte un passage en entiers très longs (64 bits), il vaut mieux commencer par la multiplication, suivie par la division.

    Mais cela revient au même que de diviser par 2^20 (pour les entiers signés) ou faire >> 20 (pour les entiers non-signés)
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  15. #35
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 14
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par sovitec

    En fait ma question était : quels sont les formats des variables ?

    Quel type d'échantillonage ? ...
    variable A (en C) : non signé sur 32 bits flottant
    variable B (autre langage: VHDL) : 12 bits réels (permet de travailler bit par bit)

    CNA: on lui rentre "0...000" (12 bits) : il sort 2 volts (min) et pour "1..111" (12 bits) il sort 3 volts (le max)

  16. #36
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 488
    Points : 397
    Points
    397
    Par défaut
    Citation Envoyé par netpit
    variable A (en C) : non signé sur 32 bits flottant
    Euh ? flottant non signé ça n'existe pas en C.

    Citation Envoyé par netpit
    variable B (autre langage: VHDL) : 12 bits réels (permet de travailler bit par bit)
    Comment s'effectue la conversion C -> VHDL ?

    Citation Envoyé par netpit
    CNA: on lui rentre "0...000" (12 bits) : il sort 2 volts (min) et pour "1..111" (12 bits) il sort 3 volts (le max)
    Je suppose donc que c'est un échantillonage linéaire.

  17. #37
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 14
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par sovitec
    Comment s'effectue la conversion C -> VHDL ?
    là, je préfère ne pas rentrer trop dans les détails ! Pour rester clair, je programme une carte FPGA (Xilinx) avec 2 programmes :l'un proche du C (pour le micro-controlleur), l'autre en VHDL (pour le design). J'ai un "compilateur" qui se charge du téléchargement dans la carte des 2 programmes.


    Citation Envoyé par sovitec
    Euh ? flottant non signé ça n'existe pas en C.
    oui excuse-moi c'est parceque le type de ma variable est spécifique au langage proche du C. Il faut lire que c'est un int non signé.


    Citation Envoyé par sovitec
    Je suppose donc que c'est un échantillonage linéaire.
    oui

  18. #38
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 488
    Points : 397
    Points
    397
    Par défaut
    Alors le décalage à droite de 20 bits (j'espère que ça existe dans ton pseudo C) fera parfaitement l'affaire : c'est rapide, et tu ne pourras pas faire mieux au niveau qualité de conversion.

    Cordialement.

  19. #39
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Citation Envoyé par 2Eurocents
    Citation Envoyé par Trap D
    On ne pourrait faire une simple règle de trois ?
    la valeur divisée par le max sur 32 bits, multipliée par le max sur 12 bits ?
    Ouh la ... si on est en entiers, on fait un "underflow" avec la première division et tout est à 0.
    Tu as entendu parler des cast ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	val = (short int) ((((double) (unsigned long)val) * (double) 0x000007FF) / (double)(unsigned long)0xFFFFFFFF) ;
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  20. #40
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Citation Envoyé par Trap D
    Tu as entendu parler des cast ?
    Oui, c'était le sens de ma remarque ... Pour attirer la vigilance sur le fait qu'il ne faut pas rester bêtement en entier pour ce genre d'opération.

    Désolé de t'avoir froissé, Trap D, ce n'était pas le but.
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

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

Discussions similaires

  1. [Debutant] Question sur le system.out.print
    Par thom02 dans le forum Langage
    Réponses: 8
    Dernier message: 19/07/2005, 18h19
  2. [debutant]Question technique
    Par toto4650 dans le forum Débuter
    Réponses: 23
    Dernier message: 13/07/2005, 02h06
  3. [debutant]Question toute bete sur le messages
    Par flogreg dans le forum Servlets/JSP
    Réponses: 18
    Dernier message: 09/09/2004, 09h07
  4. [debutant] Questions a propos du XML
    Par brune dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 04/06/2004, 09h39
  5. [debutant] Questions sur 1 futur projet
    Par cyrull22 dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 28/04/2003, 21h49

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