¿Qué número binario de 4 bits es mayor?

1

Mi tarea

Estoy trabajando en una pregunta de trabajo adicional que nuestro maestro nos asignó del libro. Diseñe un circuito combinatorio que compare dos números A y B sin signo de 4 bits 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

Tuve 2 ideas, pero ninguna es muy buena. 1 era obtener la versión complementaria de 2 de A (positiva) y B (negativa). 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 tanto, solo negaría el bit inicial y sería mi salida. De lo contrario, sería la salida 1. Esto es casi una solución, pero no creo que funcionaría 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, y comparar los bits de cada número y descubrir de esa manera. Sin embargo, esto requeriría una tabla de verdad de 256 filas, y prefiero no responder la pregunta antes que escribirla.

Ninguno de mis enfoques realmente parece factible (ni siquiera siento que cumplan con 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 que empiece)

    
pregunta Dunka

2 respuestas

3

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 tenga un '1' en ese punto y el número menor será el número que tendrá un '0' en ese punto. por ejemplo, si

$$ \ text {A} = 1100 \\ \ text {B} = 1011 $$

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 (el índice de bit 2 en este caso) A es 1 y B es 0.

Para resolver este problema, podemos comenzar definiendo una variable X \ $ _ i \ $, donde X \ $ _ i \ $ es alta si i) los bits de A y B en el índice de bits actual no son los mismos , 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 \ $ _ i \ $, es alto. Usando esta lógica podemos extraiga los valores de X \ $ _ i \ $ = {X \ $ _ 3 \ $ X \ $ _ 2 \ $ X \ $ _ 1 \ $ X \ $ _ 0 \ $} como si fueran

$$ X_3 = B_3 (A_3 \ mathbin {\ oplus} B_3) \\ X_2 = B_2 (A_2 \ mathbin {\ oplus} B_2). \ Overline {(A_3 \ mathbin {\ oplus} B_3)} \\ X_1 = B_1 (A_1 \ mathbin {\ oplus} B_1). \ Overline {(A_2 \ mathbin {\ oplus} B_2)}. \ overline {(A_3 \ mathbin {\ oplus} B_3)} \\ X_0 = B_0 (A_0 \ mathbin {\ oplus} B_0). \ overline {(A_1 \ mathbin {\ oplus} B_1)}. \ overline {(A_2 \ mathbin {\ oplus} B_2)}. \ overline {(A_3 \ mathbin {\ oplus} B_3)} $$

entonces podemos obtener nuestro resultado final X como

$$ X = X_3 + X_2 + X_1 + X_0 $$

    
respondido por el KillaKem
2

En realidad, en algunas aplicaciones su idea de 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 en un solo ciclo de lectura.

Tienes razón en que esta tabla de búsqueda tendría 256 entradas. Tiene un total de 8 bits en que cada uno puede tener cualquier valor. 2 8 = 256.

Otra forma de pensar acerca de este problema es averiguar qué necesitarías saber en cualquier posición de bit para decidir la respuesta. Supongamos que sabía si los dígitos de orden superior eran mayores que, menores o iguales. En el caso de mayor 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 encuentre la lógica que toma los tres estados posibles de los bits más altos, los dos bits que tiene que comparar, y produce los tres estados posibles para pasar a la misma lógica para el siguiente bit hacia abajo. Debería poder construir un circuito lógico usando este método que funciona en números arbitrariamente grandes, con el tiempo para encontrar la solución proporcional al número de bits en los números. También tenga en cuenta que el bit superior es un caso especial. Puede pensar que todos los bits a la izquierda son iguales.

    
respondido por el Olin Lathrop

Lea otras preguntas en las etiquetas