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

MATLAB Discussion :

Traduction C vers MATLAB - décalage


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2012
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Février 2012
    Messages : 95
    Points : 26
    Points
    26
    Par défaut Traduction C vers MATLAB - décalage
    BONJOUR,

    je veux traduire ce code en matlab( surtout la fonction décalage , j'ai pas pu la traduire en matlab dans ce cas)

    est ce que vous pouvez m'aider?

    Code C : 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
    unsigned __int8 Bit_rotate(unsigned __int8 data, int nBits){
    unsigned __int8 shiftedData,lostData,rotatedData,result;
    int dataBits = 8;
    int q;
    q = nBits % dataBits;
      if ( q == 0) {
      return(data);}
      else if (q<0){
      shiftedData = data >> -q;
      lostData = data ^ (shiftedData << -q);
      rotatedData = lostData << (q + dataBits); }
      else{
      shiftedData = data << q;
      lostData = data ^ (shiftedData >> q);
      rotatedData = lostData >> (dataBits-q); }
      result = shiftedData + rotatedData;
    return(result);
    }

    merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    MATLAB n'est pas vraiment un langage adapté pour faire ce genre de chose...
    Néanmoins tu peux regarder la fonction:
    Tu peux aussi utiliser un fichier MEX

  3. #3
    Nouveau membre du Club
    Inscrit en
    Février 2012
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Février 2012
    Messages : 95
    Points : 26
    Points
    26
    Par défaut
    pour le langage c:

    << : Décale les bits vers la gauche (multiplie par 2 à chaque décalage). Les zéros qui sortent à gauche sont perdus, tandis que des zéros sont insérés à droite .
    exemple: 6 << 1 (110 << 1) donne le resultat suivant: 12 (1100)


    est ce la fonction bitshift en matlab donne exactement le meme resultat??

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2007
    Messages : 245
    Points : 110
    Points
    110
    Par défaut
    ça a l'air de correspondre d'apres la doc matlab

    If the shift causes C to overflow the number of bits in the unsigned integer class of A, then the overflowing bits are dropped.

    C = bitshift(A, k, n) causes any bits that overflow n bits to be dropped.
    et
    Example 1

    Shifting 1100 (12, decimal) to the left two bits yields 110000 (48, decimal).

    C = bitshift(12, 2)
    C =
    48

  5. #5
    Nouveau membre du Club
    Inscrit en
    Février 2012
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Février 2012
    Messages : 95
    Points : 26
    Points
    26
    Par défaut
    est ce qu'il existe une fonction xor bit par bit en matlab ?

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2007
    Messages : 245
    Points : 110
    Points
    110

  7. #7
    Nouveau membre du Club
    Inscrit en
    Février 2012
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Février 2012
    Messages : 95
    Points : 26
    Points
    26
    Par défaut
    Si on a un nombre 4.28 , ou un autre nombre qui contient n nombre après la virgule.
    Comment on peut prendre la partie entière en MATLAB qui vaut 4 pour cet exemple?

    merci.

    [EDIT]
    je l'ai trouvé.

    merci beaucoup pour toutes les informations

  8. #8
    Nouveau membre du Club
    Inscrit en
    Février 2012
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Février 2012
    Messages : 95
    Points : 26
    Points
    26
    Par défaut
    BONJOUR
    comment faire le décalage à gauche et le décalage à droite.est ce qu'il existe des fonctions différents??

  9. #9
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    Citation Envoyé par La documentation de bitshift
    C = bitshift(A, k) ... Negative values of k are allowed and this corresponds to shifting to the right
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

Discussions similaires

  1. Traduction de code Java vers MATLAB
    Par kallelbalsam dans le forum MATLAB
    Réponses: 1
    Dernier message: 10/04/2014, 07h10
  2. [Débutant] Traduction ADA vers C
    Par Kleer dans le forum Ada
    Réponses: 3
    Dernier message: 08/02/2007, 15h09
  3. Traduction ADA vers C
    Par Kleer dans le forum C
    Réponses: 14
    Dernier message: 06/02/2007, 21h20
  4. Traduction C++ vers Delphi
    Par lil_jam63 dans le forum Langage
    Réponses: 6
    Dernier message: 05/07/2004, 13h10
  5. probleme traduction C vers Delphi
    Par zinaif dans le forum Langage
    Réponses: 3
    Dernier message: 27/06/2003, 08h51

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