¿Existen formas a nivel de puerta para producir el mínimo o máximo de dos valores binarios?

3

Algunos conceptos básicos de la lógica digital son el medio sumador y el sumador completo. Sabemos cómo producir la suma de dos valores binarios a nivel de y / o no de puertas, de una manera sencilla presentada en muchos libros de texto. (No importa los trucos avanzados utilizados en los chips de alto rendimiento del mundo real). Unos cuantos ajustes, y podemos restar.

Lo que no recuerdo haber visto nunca son las formas a nivel de puerta para producir el mínimo o el máximo de dos valores binarios. ¿Hay tal cosa? Si es así, ¿algún microprocesador lo usa?

    
pregunta DarenW

1 respuesta

8

Antes de considerar el mínimo / máximo, ¿qué tal si solo comparamos dos números? Digamos que tiene dos números binarios: A y B, y quiere saber si A > B. Lo que haces es una simple resta, C = B-A. Si C es negativo, entonces A fue mayor que B. Con un número complementario de dos binarios, el bit más significativo (MSB) será 1 si el número es negativo y 0 si es positivo. Entonces, después de la resta, un solo bit te dirá si A o B es más grande.

Ahora, esa era una forma super simple de explicarlo. Hay algunos detalles a los que se debe prestar atención.

Esto funciona con números firmados (cumplido de dos). Si A y B no están firmados, primero deberá convertirlos a firmados. Todo lo que realmente significa es que agrega un bit cero a la izquierda y el número resultante es un bit más grande. Por ejemplo, si A = 1111 (sin firmar), entonces necesita hacer A = 01111 (firmado).

El otro problema es que debe prestar atención al rango de números que va a utilizar y asegurarse de no tener condiciones de desbordamiento / desbordamiento. La forma habitual en que trato con esto es darle a A y B un poco más. Por lo tanto, un número con signo de 8 bits se convertirá en un número con signo de 9 bits. Usted hace esto duplicando el bit superior (signo). Por ejemplo, si A = 1000 (firmado), A se convertirá en 11000 (firmado).

Una vez que hayas hecho los cálculos correctamente, puedes usar el MSB de C para determinar qué número es mayor. Luego puede usar un simple MUX para seleccionar A o B dependiendo del valor de MSB de C.

    
respondido por el user3624

Lea otras preguntas en las etiquetas