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 :

décalage de bits


Sujet :

C

  1. #1
    Membre actif Avatar de trax44
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 300
    Points : 233
    Points
    233
    Par défaut décalage de bits
    bonsoir,
    je voudrais pouvoir lors d'un décalage, récupérer le bit perdu.
    Il est evidement possible de tester le bit sortant avant le décalage ; mais cette méthode est lourde. En assembleur, il est possible de récupérer le bit en question alors pourquoi pas en C ?

    Cordialement
    TRAX

  2. #2
    Membre éclairé Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Points : 858
    Points
    858
    Par défaut
    Citation Envoyé par trax44
    En assembleur, il est possible de récupérer le bit en question alors pourquoi pas en C ?
    Parcequ'en langage C il est impossible d'accéder aux registres internes du micro.
    Mais rien ne t'empêches d'écrire ta routine en assembleur, et ensuite de l'appeler en C. Ensuite à toi de voir, si tu veux que ton code soit portable ou pas.

  3. #3
    Membre actif Avatar de trax44
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 300
    Points : 233
    Points
    233
    Par défaut
    bizarre pourtant on dit que C est bien un macro assembleur

    et sinon il y a pas de solution ?

  4. #4
    Membre éclairé Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Points : 858
    Points
    858
    Par défaut
    Citation Envoyé par trax44
    bizarre pourtant on dit que C est bien un macro assembleur
    Ah oui... Et qui dit ça ?

    Citation Envoyé par trax44
    et sinon il y a pas de solution ?
    Voir mon message précédent.

  5. #5
    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 : 38
    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
    Points : 3 958
    Points
    3 958
    Par défaut
    Citation Envoyé par trax44
    bizarre pourtant on dit que C est bien un macro assembleur
    C'est ce qui le différencie des vrais langages assembleurs il est un peu plus haut niveau (dans sa partie bas niveau ).

  6. #6
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par trax44
    bonsoir,
    je voudrais pouvoir lors d'un décalage, récupérer le bit perdu.
    Il est evidement possible de tester le bit sortant avant le décalage ; mais cette méthode est lourde. En assembleur, il est possible de récupérer le bit en question alors pourquoi pas en C ?

    Cordialement
    TRAX
    Toute les architectures ne permettent pas de récupérer le bit sorti.

    Qu'est-ce que tu voudrais dans le cas des décalages multiples?

    Essaie d'écrire le code de la manière la plus simple possible et de voir si l'optimiseur est capable de remarquer la relation (la technique marche assez bien avec les rotations)

    Accessoirement, quelle genre de syntaxe voudrais-tu pour ce genre de chose?

  7. #7
    Membre actif Avatar de trax44
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 300
    Points : 233
    Points
    233
    Par défaut
    a la base je décalage 1 bit

    mélanger l'assembleur et le C ne me convient pas.
    les deux programme qui se serviront de ce décalage travail sur de très grand nombre. Donc beaucoup de répétition. Et je dois donc optimiser chaque ligne. Passer en assembleur c'est passé par la pile dans ce cas la autant utiliser des mask.

    sinon, gcc arrive pas a comprendre ce que je fait : il optimise pas dans le bon sens.



    PS les deux programme sont un test de Rabbin Miller et un algo de multiplication

  8. #8
    Rédacteur

    Profil pro
    Étudiant
    Inscrit en
    Juin 2004
    Messages
    113
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2004
    Messages : 113
    Points : 276
    Points
    276
    Par défaut
    heu, je ne vois pas en quoi est-ce lourd de sauvegarder 2 bits, le bit du plus fort poids et celui du plus faible poids, et après tu décales tranquille (1 seul bit comme tu as dit plus haut) et tu récupères le bit voulu selon le sens du décalage..

  9. #9
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par trax44
    PS les deux programme sont un test de Rabbin Miller et un algo de multiplication
    Si tu cherches à manipuler des grands nombres de manière efficace, utilise gmp.

    Si tu veux implémenter cela quand même toi-même, je ne vois pas en quoi un décalage est nécessaire pour faire des multiplications de grands nombres ni pour faire un test de Rabbin Miller.

  10. #10
    Membre actif Avatar de trax44
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 300
    Points : 233
    Points
    233
    Par défaut
    AjJi > le fait de le fair un grand nombre de fois te ralenti

    Jean-Marc.Bourguet >
    pour la multiplication j'utilise l'algorithme dit a la Russe (meme si ce sont les Egyptien qui l'on découvert)

    pour le test de rabbin miller je dois écrir mon nombre n a tester tel que :
    (n-1) = (2^k) avec e=2q+1

  11. #11
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par trax44
    pour la multiplication j'utilise l'algorithme dit a la Russe (meme si ce sont les Egyptien qui l'on découvert)
    Et tu prétends être intéressé par les performances? Commence par choisir un algo plus efficace avant de chipoter sur ce genre de détails pour l'implémentation. Par exemple utiliser l'algo de la multiplication écrite classique mais avec des chiffres qui font 16 (si tu n'as pas de long long ou de type entier de 64 bits) ou 32 bits (si tu en as). Après tu peux chercher dans les algo sub-quadratiques (mais c'est plus un sujet pour le forum d'algorithmes).

  12. #12
    Membre actif Avatar de trax44
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 300
    Points : 233
    Points
    233
    Par défaut
    gné ?
    je vois pas ce qui te dérange dans l'algo de la multiplication a la Russe mise a part que avec les test en assembleur j'arrive a avoir des rapport de 10 !

  13. #13
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par trax44
    gné ?
    je vois pas ce qui te dérange dans l'algo de la multiplication a la Russe mise a part que avec les test en assembleur j'arrive a avoir des rapport de 10 !
    Que c'est loin d'etre la methode la plus performante pour faire des multiplications sur les grands nombres.

Discussions similaires

  1. Décalage de bits
    Par Kraz dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 21/10/2006, 19h09
  2. décalages de bits
    Par seb95 dans le forum Java ME
    Réponses: 4
    Dernier message: 05/03/2006, 05h03
  3. décalage de bits
    Par cedre22 dans le forum Langage
    Réponses: 13
    Dernier message: 17/01/2006, 10h33
  4. Multiplication par décalage de bits
    Par tekman54000 dans le forum Assembleur
    Réponses: 2
    Dernier message: 25/10/2005, 12h35
  5. Décalage de bit sur unsigned char [8]
    Par dboulange dans le forum C++
    Réponses: 14
    Dernier message: 26/07/2005, 15h10

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