J'essaie actuellement d'écrire un algorithme qui détermine combien de bits sont nécessaires pour représenter un nombre x. Ma mise en œuvre sera en c. Il y a quelques captures cependant, je suis limité à peu près les opérateurs au niveau du bit {~, &, ^, |, +, < <, >>}. De plus, je ne peux utiliser aucun type de flux de contrôle (si, while, for). Mon approche originale était d'examiner le nombre en binaire de gauche à droite, et de chercher où il y a une occurrence du premier '1'. Je ne sais pas comment aborder cela compte tenu des restrictions que j'ai. Le numéro avec lequel je travaille peut être considéré comme un entier non signé. Donc, 00110 ne nécessiterait que 3 bits.Nombre de bits requis pour représenter un nombre x
Je me demande s'il existe une façon beaucoup plus facile/propre de faire cela et que je l'ai manqué? Ou si quelqu'un peut donner quelques conseils?
En fait, je tentais de mettre en œuvre ce sans la boucle while:
int result = 0;
while (x >>= 1) {
result += 1;
}
return result;
Est-ce un devoir? –
Le nombre est-il un nombre entier ou flottant? Quelles sont les valeurs maximales et minimales? Signé ou non signé? –
@AbhijeetRastogi: Oui, c'est l'un des derniers "casse-tête" que je suis en train de résoudre pour un cours d'architecture informatique. J'ai tous les types de problèmes comme celui-ci qui impliquent la manipulation de bits, je suis actuellement à environ 80% du chemin et c'est l'un des derniers problèmes sur lesquels je ne peux vraiment pas commencer. –