Mi tarea
Estoy trabajando en una pregunta de trabajo extra que nuestro maestro nos asignó del libro. Diseñe un circuito combinatorio que compare dos números sin signo de 4 bits A y B para ver si B es mayor que A. El circuito tiene una salida X, de modo que X = 1 si A < B y X = 0 si A = B o A > B.
Mis ideas
Tenía 2 ideas, pero ninguna es muy buena. 1 era obtener la versión en complemento de 2 de A (positivo) y B (negativo). Luego podría sumarlos y si tuviéramos un negativo, sería obvio que B es mayor que A. El bit inicial sería 1, por lo que simplemente negaría el bit inicial y haría que ese fuera mi resultado. De lo contrario, generaría 1. Esto es casi una solución, pero no creo que funcione si tuviéramos A = B porque entonces el bit inicial sería 0 pero tendríamos una salida de 1 que indicaría A>B cuando de hecho A = B.
Mi segunda idea fue dividir cada número en 4 bits, comparar los bits de cada número y averiguarlo de esa manera. Sin embargo, esto requeriría una tabla de verdad de 256 filas, y preferiría simplemente no responder la pregunta que escribirla.
Ninguno de mis enfoques realmente parece factible (ni siquiera siento que logren la tarea). ¿Alguien puede sugerir una pista sobre cuál sería un buen enfoque o idea para realizar esta tarea? (No busco una solución completa, solo algo para comenzar)
Si desea encontrar el número más grande entre dos números sin signo A y B, todo lo que necesita mirar es el bit más significativo donde los bits en A y B no son iguales, el número más grande es el número que tendrá un ' 1' en ese punto y el número más pequeño será el número que tendrá un '0' en ese punto. por ejemplo, si
entonces A es más grande que B porque en el bit más significativo donde los números de bit no son los mismos (índice de bit 2 en este caso) A es 1 y B es 0.
Entonces, para resolver este problema, podemos comenzar definiendo una variable X , donde X es alta si i) los bits de A y B en el índice de bits actual no son iguales, ii) todos los bits de A y B han sido iguales en todos los índices mayores que el índice actual y iii) el bit de valor de B en el índice actual, B , es alto. Usando esta lógica podemos extraer los valores de X = {X X X X } como ser
entonces podemos obtener nuestro resultado final X como
En realidad, en algunas aplicaciones, la idea de la tabla de búsqueda sería cómo se hace. Utiliza una buena cantidad de memoria de solo lectura para realizar la tarea, pero tiene la ventaja de que todas las soluciones se encuentran dentro de un solo ciclo de lectura.
Tiene razón en que esta tabla de búsqueda tendría 256 entradas. Tienes un total de 8 bits en los que cada uno puede tener cualquier valor. 2 8 = 256.
Otra forma de pensar en este problema es averiguar lo que necesitaría saber en cualquier posición de un bit para decidir la respuesta. Suponga que sabe si los dígitos de orden superior son mayores que, menores que o iguales. En el caso de mayor que o menor que, los dígitos a su izquierda ya han determinado el resultado. En el caso de igual a, su bit determinará el resultado si son diferentes.
Ahora cree la lógica que toma los tres estados posibles de los bits superiores, los dos bits que tiene que comparar, y produce los tres estados posibles para pasar a la misma lógica para el siguiente bit inferior. Debería poder construir un circuito lógico utilizando este método que funcione en números arbitrariamente grandes, con el tiempo para encontrar la solución proporcional a la cantidad de bits en los números. También tenga en cuenta que el bit superior es un caso especial. Puede pensar en ello como sabiendo implícitamente que todos los bits a la izquierda son iguales.
Ignacio Vázquez-Abrams
Dunka
Ignacio Vázquez-Abrams
Dunka
Ignacio Vázquez-Abrams
Dunka
Ignacio Vázquez-Abrams
Spehro Pefhany
Dunka
Spehro Pefhany