Bonjour, je dois implémanter la racine carrée en binaire. J'ai trouvé un algorithme qui permet de faire sa et le voila :
Comme vous avez pu le voir, j'ai essayé l'algorithme en rentrant la valeur 16 en binaire et cela me retourne 5.Code:u16 racine(u32 valIn) { u16 valOut = 0; u32 diff = 0L; for( int i=0 ; i<16 ; i++ ) { diff <<= 2; valOut <<= 1; diff |= valIn>>30; valIn <<= 2; if( diff>2*valOut ) { diff -= 2*valOut+1; valOut++; } } return valOut; } Ici u16 et u32 représentent des entiers respectivement de 16 et 32 bits. Je l'ai implémenté en c++ et voici le code : unsigned int racine(unsigned long int valIn) { unsigned int valOut = 0; unsigned long int diff = 0L; for( int i=0 ; i<16 ; i++ ) { diff <<= 2; valOut <<= 1; diff |= valIn>>30; valIn <<= 2; if( diff>2*valOut ) { diff -= 2*valOut+1; valOut++; } } return valOut; } int main() { unsigned int valIn = 0b00000000000000000000000000010000; cout << racine(valIn) << endl; return 1; }
Je me demande donc s'il y a un problème avec mon implémentation.
Je vous remerci d'avance de votre aide m'excuse du dérangement occasioné.
-----