2010-05-26 3 views
-5

j'ai besoin de créer une fonction qui retourne d e bit de nombre donné Quelqu'un peut-il m'aider?montre le d bit du nombre

+3

bit ou chiffre? le titre de votre question dit digit, votre question dit bit, alors qu'est-ce que c'est? –

+0

Vous aurez besoin d'être plus clair avec votre question. – Laplace

+0

Je ne vais pas l'écrire, mais la division par 10 sera votre ami. –

Répondre

4

Pour retourner le chiffre Nième d'un certain nombre, faites:

digit = (number/base^N) mod base 

Remarques

  • / est-division entière ici.
  • base est 10 pour la décimale, 8 pour l'octal, 16 pour l'hexadécimal, etc. (bien que pour les bases> 10 vous devrez convertir le nombre que vous obtenez à un chiffre approprié, puisque vous obtiendrez 11-15 pour l'hexadécimal pour par exemple, mais ce devrait être le chiffre AF)

où "N" est compté à partir du côté droit, base zéro. Si vous avez besoin de compter à partir de la gauche, c'est probablement plus facile si vous convertissez simplement en une chaîne et utilisez plutôt la sous-chaîne.

Pour un seul bit:

bit = (number >> N) and 1 

où N est à nouveau de la droite, et sur la base zéro. Bien, vous pouvez également utiliser la première variante pour les bits, utilisez simplement un base de 2, mais il pourrait être légèrement meilleure performance avec les opérations bit-sage qu'avec division et mod.

1

Cela vous donnera un peu spécifique dans un certain nombre:

(number >> bit) & 1 

Si, par exemple number est 32 (00100000 binaire) et bit est 5, vous obtiendrez la valeur 1.

Dans le le code >> est l'opérateur shift right et & est l'opérateur binary and.