begin process at 2010 02 10 11:05:53
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Système

 > 

Autre

 > 

Décalage de n bit


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Décalage de n bit

jeudi 17 janvier 2008 à 21:58:18 | Décalage de n bit

sniper83

Bonjour a tous

La fonction suivante fait un décalage a droite de n bit dans mot de 64 bits:

typedeflonglong Word64;
 
staticinline Word64 sar64(Word64 valeur, int nb)
{int temoin,b;
Word64 provisoir;
unsignedint poidfort,poidfaible;
 
provisoir=valeur;
provisoir>>=32;
poidfort=(int)provisoir;

provisoir=valeur;
poidfaible=(int)provisoir;



nb &= 0x3F; // prudence : pas plus de 63 décalages
 
for(b = 0; b < nb; b++)
{
temoin = poidfort & 0x00000001;
poidfort >>= nb;
poidfaible >>= nb;
poidfaible |= temoin;

}


provisoir=0;
provisoir=poidfort;
provisoir<<=32;
provisoir+=poidfaible;

return provisoir;
}
Pouvez vous m'aidez a l'optimisé par du assembleur ARM ou avec des changements dans le code.
sachant que la platform est le microcontroleur ARM.
Merci d'avance.

dimanche 20 janvier 2008 à 15:53:00 | Re : Décalage de n bit

Spoolega

Bonjour,

Je pense que ta boucle for peut être améliorée un peu:
   poidfaible >>= nb;
   poidfaible |= temoin;
a changer en :  poidfaible = (poidfaible >> nb) | temoin;

Il me semble que le code peut être optimisé, après la boucle for par exemple:
provisoir=0;
provisoir=poidfort;
la première instruction (provisoir=0) ne sert à rien, puisque tu affectes une autre valeur juste après.

Ces lignes peuvent être améliorées je pense:
   provisoir=poidfort;
   provisoir<<=32;  
   provisoir+=poidfaible;
   return provisoir;
par :
   provisoir = poidfort;
   return ( (provisoir<<32) + poidfaible );

Ces modifications nous font gagner quelques cycles machines.
 
++



Cette discussion est classée dans : int, provisoir, poidfort, poidfaible, word64


Répondre à ce message

Sujets en rapport avec ce message

Aide pour mega debutant [ par C++ ] Salut, bon alors je vien d ouvrir c++ mais comment mettre un code sur un boutton ???par exemple ce code comment je doits le mettre sur un bouton :int Problème de "pression de touches" [ par Quiske ] Bonjour tout le monde , je suis un programmeur débutant jeune 14 - 15 ans qui a un problème :Je voudrais dire a l'ordinateur que j'appuie sur une tou Help Debutant [ par Kaouane ] Salut,je voudrais juste savoir les erreurs qu'il y'a dans ce programme qui vam e servir a retenir les syntaxe d'une classe:#include class addition{int Heeeelp .... [ par Guillaume ] J'ai ca : (programme tres simplifié ... bien sur ...)#include #include class TMAC { public: void getVAR();};void TMAC::getVAR() { printf("%d\n",Ai); Pourquoi ca marche pas, c'est tout bete pourtant ! [ par Coyito ] SalutQuand je fais avec VC6:int *b;b= 7992060;(je veux que b pointe sur l'adresse mémoire 7992060)J'ai une erreur : error C2440: '=' : cannot convert [debutant] Simple mais comment faire [ par Coyito ] bonjourj'ai dans mon prgint *b;b est un pointeur vers un int, comment puis connaitre la valeur de cet int sans modifier le programme en amont ???Merci int to char ! [ par nullspace ] Voila mon problème !J'ai une résultat sous forme de variable INT, et je veux que ce résultat soit affecté à une variable de type CHAR.Genre, si j'ai 6 Variable int sur le disque... [ par nullspace ] Je cherche à enregistrer et lire sur le disque par ofstream et ifstream à partir de variables de type int.Seulement il m'écrit sous format texte.En vb Liste des propriétés/fonctions d'une librairie disponible???? [ par nullspace ] Oui je voulais savoir s'il y avait un moyen de connaitre toutes les propriétés et fonction disponible d'une librairie, genre un utilitaire...Par exemp Pas compris les arguments [ par Bog ] Bonjour.Voila à chaque fois que je me lance dans un projet de programmation C++, je suis tjrs bloqué par certaines choses, surtout les arguments, et c


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,515 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales