Question

En fait, j'ai 2 nombres binaires non signés 8 bits et je dois utiliser la logique booléenne pour savoir qui est plus grand et je ne peux pas pour la vie de me comprendre où commencer. L'utilisation des portes logiques ...

obivously Je dois analyser chaque bit et savoir que l'on est plus grand, mais comment puis-je mettre tous ensemble?

Dire que j'avais x et y et je voulais retourner vrai si x

Je pensais que de trouver ce qui a le bit le plus significatif, mais s'ils sont tous deux les mêmes?

Quelqu'un at-il des idées?

Était-ce utile?

La solution

  

Je pensais que de trouver ce qui a le bit le plus significatif, mais s'ils sont tous deux les mêmes?

Vous continuez de « bit le plus significatif » jusqu'à la « bit le moins significatif » jusqu'à ce qu'il ya une différence. Le nombre avec le premier bit à « 1 » est le plus grand.

Pour mettre en oeuvre ce, en utilisant un « shift register » pour chaque numéro et un comparateur pour les bits « out » de la SR.

Autres conseils

Vous êtes en partie là. Oui, commencez par le bit le plus significatif. Si elles sont à la fois la même chose, passer au bit suivant (déplacement vers la droite, vers le bit le moins significatif). Lorsque vous trouvez un bit mis (et pas l'autre), qui est le plus grand nombre.

En effet, vous êtes sur la bonne voie. Tout d'abord comparer le bit le plus significatif. Si elles ne sont pas égaux, vous pouvez déjà sortie le résultat, d'une façon ou l'autre. Si elles sont égales, alors que vous venez de sortir le résultat de la comparaison du bit le plus significatif secondes . Et ainsi de suite jusqu'à ce que le bit le moins significatif. Récursion d'une manière. En conséquence, vous aurez la même configuration de portes répétée pour chaque bit, à l'exception du dernier qui aura une légère variation (parce qu'il n'y a pas d'autre peu après que l'on).

Si le bit est d'un « plus grand » (c.-à-: il est 1 et l'autre est 0)., Alors que le nombre est le plus gros

Si elles sont les mêmes, alors effectuer le même test sur le bit suivant.

Donc, vous voulez quelque chose de ce pseudo-code C comme (prétendant que nous avons les bits dans les tableaux avec les plus importants dans la position 0):

// true iff x > y
(x[0] == 1 && y[0] == 0) 
|| (
  (y[0] == x[0]) 
  && (the entire expression all over again, but with [n+1] instead of [n])
)

Pour votre cas de base (ex: quand il n'y a plus de bits à tester)., Utiliser vrai ou faux selon que vous voulez> ou> =

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top