BENB> Tu vas dans le sens de Verdy. Le code qu'il a donné est toujours plus efficace dès lors qu'on travaille sur des entiers.
Croyez-moi, il y a des fois où le code que Verdy a donné est bien plus approprié (bien qu'il soit ici bien peu lisible, je vous l'accorde, mais vous pouvez le présenter un peu mieux à titre d'exercice). Tout dépend de ce que vous voulez faire / pas faire, du nombre de fois où vous exécutez votre code, etc.
Et à condition d'écrire "res=x2" (voire "res=x2 >> 1", n'est-ce pas BENB ;-) ) au lieu du beaucoup plus dangereux "res=65536", ce code est sans erreurs. Une fois caché dans une fonction appropriée, il n'aurau pas à changer, et il n'aura pas à être débogué => aussi sûr que le sqrt() sur des flottants (voire plus, puisque pas de problème d'arrondi).