Pregunta

Básicamente tengo 2 números binarios de 8 bits sin signo y tengo que usar la lógica booleana para averiguar que es más grande y no puedo por la vida de a averiguar por dónde empezar. El uso de puertas lógicas ...

obivously tengo que analizar cada bit y averiguar cuál es el más grande, pero ¿cómo puedo ponerlo todo junto?

decir que tuve x e y y quería devolver verdadero si x

pensé hallazgo que tiene el bit más significativo, pero lo que si los dos son lo mismo?

¿Alguien tiene alguna idea?

¿Fue útil?

Solución

  

pensé hallazgo que tiene el bit más significativo, pero lo que si los dos son lo mismo?

Se procede de "bit más significativo" hasta el "bit menos significativo" hasta que haya una diferencia. El número con el primer conjunto de bits a "1" es mayor.

Para implementar esto, utilizar un "registro de desplazamiento" para cada número y un comparador para los bits de "fuera" de la SR.

Otros consejos

Esta parte del camino allí. Sí, empezar desde el bit más significativo. Si los dos son lo mismo, pase a la siguiente bits (que se mueve a la derecha, hacia el bit menos significativo). Cuando encuentre un poco que se establece (y el otro no), que es el número mayor.

De hecho, estás en el camino correcto. En primer lugar comparar el bit más significativo. Si no son iguales, ya que puede dar salida al resultado, de un modo u otro. Si son iguales, entonces usted acaba de emitir el resultado de la comparación de la segundo bit más significativo. Y así sucesivamente hasta el bit menos significativo. Recursividad en cierto modo. En el resultado tendrá la misma configuración de puertas repetidas para cada bit, a excepción de la última que va a tener una ligera variación (porque no hay más poco después de que uno).

Si el bit alto de uno es "más grande" (es decir: es 1 y el otro es 0), entonces que el número es el más grande

.

Si son los mismos continuación, realizar la misma prueba en el siguiente bit.

Así que usted quiere algo así como C-pseudo-código (simulando que tenemos los bits en las matrices con los más significativos en la posición 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])
)

Para su caso base (es decir: cuando no hay más bits a prueba)., Utilización falsa o verdadera, dependiendo de si desea> o> =

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top