- Aprender
- Informática
- Ciencias de la computación
- Organización y arquitectura de computadores
- Aritmética de computadores
Aritmética de computadores
IntermedioUnidad 3 de 6 del curso Curso de Organización y arquitectura de computadores
Lo que aprenderás
- Usa un único sumador binario para sumar y restar valores con y sin signo, y determina cuándo un resultado ya no cabe en sus bits.
- Suma y resta enteros binarios con un único sumadorSuma números de n bits columna por columna, resta sumando el complemento a dos y comprueba por qué el mismo circuito sirve para valores con y sin signo.
- Detecta el desbordamiento en resultados con signo y sin signoDistingue el acarreo del desbordamiento, detecta cada uno con hardware sencillo o una secuencia breve de instrucciones, y conoce qué hacen los procesadores y los lenguajes cuando se produce.
- Suma y resta enteros binarios con un único sumador
- Construye una ALU a partir de secciones de 1 bit que sume, reste, compare y realice operaciones lógicas, y acelera su cadena de acarreo.
- Construye una ALU de n bits a partir de secciones de 1 bitCombina puertas lógicas, un sumador completo y multiplexores en una ALU de 1 bit, encadena las secciones para formar una ALU de n bits y selecciona operaciones con líneas de control.
- Compara números y detecta el cero en la ALUGenera la salida de detección de cero para saltos por igualdad y el resultado de menor que para comparaciones con y sin signo, incluida la corrección por desbordamiento.
- Acelera la suma con anticipación de acarreoExplica por qué los acarreos ralentizan los sumadores de propagación y calcula los acarreos por anticipado con señales de generación y propagación.
- Construye una ALU de n bits a partir de secciones de 1 bit
- Multiplica y divide como lo hace el hardware, desde circuitos sencillos de desplazamiento y suma hasta reglas de signo, multiplicadores rápidos e instrucciones de RISC-V.
- Multiplica mediante desplazamiento y sumaMultiplica números binarios sin signo con el algoritmo secuencial de desplazamiento y suma, asigna correctamente el tamaño del producto y usa desplazamientos para potencias de dos.
- Multiplica números con signo y aplica técnicas de multiplicación rápidaTrabaja con operandos en complemento a dos, recodifica multiplicadores con el algoritmo de Booth y explica cómo los multiplicadores en árbol alcanzan una velocidad elevada.
- Divide enteros y trata los casos especialesDivide con el algoritmo de restauración, aplica las reglas de signo del cociente y el resto, y conoce cómo tratan el hardware y RISC-V la división por cero y el desbordamiento.
- Multiplica mediante desplazamiento y suma
- Codifica y decodifica valores binarios de IEEE 754, explica el rango y la precisión de cada formato y reconoce ceros, infinitos, valores NaN y números subnormales.
- Codifica y decodifica formatos binarios de IEEE 754Escribe un número en notación científica binaria normalizada, almacénalo en los campos de signo, exponente con sesgo y fracción, e interpreta los bits almacenados como un valor.
- Usa ceros, infinitos, valores NaN y números subnormalesReconoce los patrones de exponente reservados, explica el subdesbordamiento gradual y predice los resultados e indicadores de las operaciones excepcionales.
- Codifica y decodifica formatos binarios de IEEE 754
- Sigue los pasos que realiza el hardware para sumar y multiplicar en coma flotante, redondea los resultados correctamente y predice los errores de precisión resultantes.
- Suma y multiplica números en coma flotanteAlinea, opera, normaliza y redondea en el orden que sigue el hardware de coma flotante, y usa las instrucciones de coma flotante de RISC-V.
- Redondea los resultados correctamenteAplica las direcciones de redondeo de IEEE 754, redondea al más cercano con desempate al par y usa los bits de guarda, de redondeo y adherente para redondear como si tuvieras precisión infinita.
- Predice y evita errores de precisiónExplica por qué valores decimales familiares son inexactos en binario, por qué la suma en coma flotante no es asociativa y cómo la absorción, la cancelación y las conversiones causan fallos reales.
- Suma y multiplica números en coma flotante
Guía de estudio de Aritmética de computadores
1Suma y resta enteros y detecta el desbordamiento
Un sumador produce bits antes de que se decida si representan números con o sin signo. Sigue los acarreos durante la suma, reutiliza el mismo circuito para la resta y después comprueba el resultado frente al rango adecuado. La distinción también importa en el software: un procesador puede mantener indicadores de estado, devolver los bits menos significativos o generar una excepción, mientras que un lenguaje de programación da sus propias reglas a esas operaciones máquina.
1.1 Suma y resta enteros binarios con un único sumador
Un sumador binario realiza la misma pequeña tarea en cada posición de bit. Combina los dos bits de los operandos con un acarreo procedente de la posición de la derecha. El significado del patrón de bits completo se determina después.
Sigue el acarreo
Un semisumador tiene dos entradas: su suma es la operación XOR de ambas y su acarreo es su operación AND. Un sumador completo también acepta un acarreo de entrada:
Aquí la multiplicación significa AND y la suma significa OR. La suma es 1 para un número impar de entradas con valor 1; el acarreo es 1 cuando hay al menos dos. Encadenar sumadores completos forma un sumador de propagación de acarreo. Solo el bit 0 recibe el acarreo inicial; cada bit posterior recibe el acarreo producido por el bit vecino.
Para 23 + 45, escribe 0001 0111 + 0010 1101. En el bit 0, 1 + 1 produce suma 0 y acarreo 1. En el bit 1, 1 + 0 + 1 vuelve a producir 0 y acarreo 1. En el bit 2, tres entradas con valor 1 producen suma 1 y acarreo 1. Al continuar hacia la izquierda se obtiene 0100 0100, o 68, sin acarreo final.
Un resultado de n bits conserva solo los n bits menos significativos, por lo que el circuito calcula la suma módulo . En 8 bits, 1111 1100 + 0000 0101 produce 0000 0001 y acarreo de salida 1. Interpretado con signo, esto es −4 + 5 = 1. Interpretado sin signo, es 252 + 5 = 257, cuyos ocho bits menos significativos representan 1. El circuito no ha cambiado; el rango permitido sí.
Convierte la resta en suma
El complemento a dos proporciona la identidad
Una línea de control de resta aplica XOR con 1 a cada bit del segundo operando, invirtiéndolo, y fija el acarreo de entrada inicial en 1. Para la suma, esa línea es 0, por lo que el segundo operando pasa sin cambios y el acarreo inicial es 0.
Para calcular 23 − 45, invierte 0010 1101 para obtener 1101 0010. Suma 0001 0111 + 1101 0010 + 1 para obtener 1110 1010, con acarreo de salida 0. Su valor con signo es −22. Dejar el acarreo inicial en 0 daría −23: la inversión por sí sola proporciona uno menos que el valor negativo requerido.
Para la resta sin signo, acarreo de salida 1 significa sin préstamo; acarreo de salida 0 significa que se necesitó un préstamo. Así, el acarreo de salida 0 en 23 − 45 indica un resultado sin signo por debajo de cero. Arm registra este acarreo que indica ausencia de préstamo; x86 registra su inverso como indicador de préstamo.
Ajusta las anchuras antes de operar
| Interpretación | Regla de extensión | Extensión de 1110 de 4 bits a 8 bits |
|---|---|---|
| Complemento a dos con signo | Copiar el bit de signo | 1111 1110, sigue siendo −2 |
| Sin signo | Insertar ceros | 0000 1110, sigue siendo 14 |
La instrucción lb de RISC-V extiende el signo de un byte, lbu lo extiende con ceros y addi extiende con signo su inmediato de 12 bits. Elige la extensión según el significado del operando antes de enviar los bits al sumador.
El valor con signo más negativo no tiene un equivalente positivo con la misma anchura. Cambiar el signo de 1000 0000 de 8 bits lo invierte a 0111 1111 y suma 1, con lo que vuelve a 1000 0000. El +128 deseado necesita un formato con signo más ancho.
Puntos clave
- Un sumador completo combina dos bits de operandos y un acarreo de entrada.
- La suma almacenada de n bits es la suma matemática módulo .
- La resta invierte el segundo operando y fija solo el acarreo de entrada inicial en 1.
- En este circuito de resta, un acarreo de salida de 1 significa que no hay préstamo sin signo.
- La extensión de signo conserva los valores con signo; la extensión con ceros conserva los valores sin signo.
1.2 Detecta el desbordamiento en resultados con signo y sin signo
El desbordamiento significa que el resultado exacto queda fuera del rango del destino. Los valores sin signo de n bits van de 0 a ; los valores con signo en complemento a dos van de a . Ocho bits contienen de 0 a 255 sin signo, o de −128 a 127 con signo. El mismo resultado almacenado puede ser válido en una interpretación y estar desbordado en la otra.
Comprueba la señal adecuada
| Operación | Desbordamiento sin signo | Desbordamiento con signo |
|---|---|---|
| Suma | El acarreo de salida del bit más significativo es 1 | Entradas del mismo signo producen un resultado de signo contrario |
| Resta | Se necesita un préstamo | Entradas de distinto signo producen un resultado cuyo signo difiere del de la primera entrada |
Para la suma o resta con signo, el hardware puede usar
donde los dos acarreos entran y salen de la posición de signo. El acarreo de salida por sí solo responde a la cuestión sin signo.
Suma 107 y 54 en 8 bits: 0110 1011 + 0011 0110 da 1010 0001. Entra un acarreo en el bit 7, pero no sale ninguno, por lo que el desbordamiento es 1. El valor sin signo 161 cabe; la interpretación con signo −95 no es igual a la suma verdadera 161. A la inversa, −4 + 5 da acarreo 1, pero desbordamiento con signo 0. Sumar 1000 0000 consigo mismo da acarreo 1 y desbordamiento 1, por lo que ambas interpretaciones fallan.
Sumar números de signos opuestos no puede producir desbordamiento: la suma exacta está entre los operandos. La resta necesita su propia regla de signos porque restar un número negativo aumenta el primer operando. Por ejemplo, 100 − (−40) es demasiado grande para 8 bits con signo, aunque ambos valores de entrada caben.
Conoce qué hace la instrucción
add de x86 establece indicadores de acarreo y desbordamiento. Las operaciones de Arm que actualizan indicadores, como ADDS, los establecen; la instrucción ADD normal conserva los indicadores existentes. add y addi de MIPS generan una excepción síncrona por desbordamiento con signo, mientras que addu y addiu no lo hacen. La suma de enteros de RISC-V escribe los bits menos significativos y no tiene indicadores de desbordamiento ni excepciones síncronas por desbordamiento aritmético.
Después de add t0, t1, t2, una comprobación sin signo en RISC-V es:
bltu t0, t1, overflow
Una suma sin signo que ha vuelto al extremo inferior del rango es menor que un operando original. Los valores con signo necesitan una comprobación distinta:
slti t3, t2, 0
slt t4, t0, t1
bne t3, t4, overflow
La primera instrucción registra si el segundo operando es negativo. La segunda registra si el resultado es menor que el primer operando. Sin desbordamiento, estas comprobaciones coinciden: sumar un número negativo reduce el valor, mientras que sumar uno no negativo no puede reducirlo. Una discrepancia detecta el desbordamiento. Para un inmediato positivo conocido, basta un salto condicional con signo que compruebe si la suma disminuyó.
Separa el hardware de las reglas del lenguaje
La aritmética sin signo de C y C++ vuelve al extremo del rango módulo ; el desbordamiento con signo es un comportamiento indefinido. Los tipos int y long de Java vuelven al extremo del rango, mientras que Math.addExact informa del desbordamiento mediante una excepción. Los enteros de Python crecen según sea necesario. Por tanto, la vuelta al extremo del rango en hardware no determina qué se permite hacer a un programa en C.
Las sumas y restas con vuelta al extremo del rango conservan un resultado final que cabe: en aritmética modular de 8 bits, (100 + 50) − 60 vuelve al rango primero como −106 y después como 90. Este razonamiento se aplica a la aritmética con vuelta al extremo del rango, no a expresiones con signo de C que se desbordan.
La saturación es una política distinta. La suma sin signo de 8 bits 200 + 100 se satura a 255 en lugar de volver al rango como 44. Es útil para intensidades de píxeles y otras señales acotadas, donde convertir un resultado positivo grande en un valor pequeño al volver al rango sería engañoso.
Puntos clave
- Elige las comprobaciones de desbordamiento según la interpretación de los operandos y la operación.
- El desbordamiento con signo es la operación XOR de los acarreos de entrada y de salida del bit de signo.
- El software de RISC-V debe comprobar el desbordamiento de enteros cuando necesita informarlo.
- El desbordamiento con signo de C, la vuelta al extremo del rango de Java y los enteros crecientes de Python tienen semánticas distintas.
- La suma y la resta modulares pueden recuperar un valor final representable después de una vuelta intermedia al extremo del rango.
- La saturación limita un resultado fuera de rango a uno de los extremos.
2Diseña una unidad aritmético-lógica
Una ALU convierte una selección de operaciones en un circuito compartido. Las puertas y un sumador calculan resultados candidatos, las líneas de control seleccionan uno y algunas salidas adicionales permiten comprobar la igualdad y el orden. Construye esa estructura a partir de secciones de bits, comprueba por qué la comparación con signo necesita corrección por desbordamiento y después acorta el camino de acarreo para que un camino de datos más ancho pueda producir su resultado aritmético sin esperar a que un acarreo atraviese todos los bits.
2.1 Construye una ALU de n bits a partir de secciones de 1 bit
Una unidad aritmético-lógica, o ALU, recibe operandos y entradas de control y produce un resultado junto con salidas de estado. Es combinacional: sus salidas dependen de las entradas actuales. Los registros conservan los operandos y capturan los resultados; la ALU no almacena nada por sí misma.
Construye un bit y después repítelo
Una sección de 1 bit calcula AND, OR y la suma de un sumador completo en paralelo. Un multiplexor selecciona qué resultado candidato llega al bit de resultado. En una ALU de n bits, todas las secciones comparten los controles de operación, mientras que el acarreo de salida de cada sumador alimenta el acarreo de entrada de la sección siguiente. Las operaciones lógicas funcionan de forma independiente en cada posición; la suma depende de la cadena de acarreo.
Un control Bnegate invierte el segundo operando y también fija el acarreo de entrada del bit 0. Al seleccionar el sumador se calcula entonces la resta. Las secciones superiores reciben su acarreo de la sección anterior, no directamente de Bnegate. Activar todas las entradas de acarreo introduciría unos adicionales en el cálculo.
Un control Ainvert también puede invertir el primer operando. Seleccionar AND con ambos operandos invertidos produce NOR según la ley de De Morgan:
Seleccionar OR con ambos invertidos produce NAND. En estas ecuaciones lógicas, el signo más denota OR.
Interpreta una palabra de control
Una ALU clásica de libro de texto usa los campos Ainvert, Bnegate y un selector Operation de dos bits:
| Palabra de control | Resultado seleccionado |
|---|---|
0000 | AND |
0001 | OR |
0010 | Suma |
0110 | Resta |
0111 | Puesta a uno si es menor con signo |
1100 | NOR |
Estas son las codificaciones de este diseño concreto. Son controles internos, no codificaciones de instrucciones RISC-V.
Para las entradas 0101 y 0011, el control 0110 invierte la segunda entrada a 1100 y proporciona un acarreo inicial de 1. El sumador produce 0010, con acarreo de salida 1: 5 − 3 = 2, sin préstamo sin signo. Seleccionar AND para las entradas originales produciría en cambio 0001. Los valores de entrada pueden permanecer fijos mientras un cambio de control selecciona un camino de resultado distinto.
La sección más significativa también proporciona información de desbordamiento y comparación. Una reducción de todos los bits del resultado proporciona Zero. Esas salidas de estado permiten que el control del procesador que rodea a la ALU compruebe el resultado aritmético sin almacenar un segundo resultado de anchura completa.
Añade el desplazamiento junto al sumador
Una ALU completa para enteros básicos de RISC-V también necesita XOR, comparación sin signo y desplazamientos. Un desplazador de barril usa una secuencia de niveles de multiplexores. Cada nivel deja pasar su entrada o la desplaza una potencia de dos. Un desplazador de 32 bits tiene niveles para 1, 2, 4, 8 y 16 posiciones, por lo que gestiona cualquier desplazamiento de 0 a 31 en cinco niveles.
Para desplazar 13 posiciones, selecciona los niveles de 8, 4 y 1. Los desplazamientos seleccionados se combinan en un resultado. Un desplazamiento lógico a la derecha inserta ceros. Un desplazamiento aritmético a la derecha replica el bit de signo y conserva el signo de un valor negativo. Así, 1111 0000 desplazado dos posiciones a la derecha da 0011 1100 de forma lógica y 1111 1100 de forma aritmética.
Puntos clave
- Una ALU calcula a partir de las entradas actuales; los registros proporcionan almacenamiento.
- Las secciones de bits comparten los controles de operación y transmiten acarreos entre posiciones adyacentes.
- Bnegate invierte el segundo operando y proporciona el acarreo inicial para la resta.
- Un multiplexor selecciona entre resultados aritméticos y lógicos.
- Los niveles de un desplazador de barril combinan desplazamientos por potencias de dos.
2.2 Compara números y detecta el cero en la ALU
Las comparaciones suelen reutilizar la resta. La igualdad pregunta si la diferencia es cero. La comparación de orden pregunta si la diferencia matemática es negativa, lo que requiere especial cuidado cuando una resta de anchura fija se desborda.
Detecta la igualdad en todos los bits
La salida Zero es la operación NOR de todos los bits del resultado:
Un solo bit de resultado distinto de cero hace que Zero sea falso. Restar dos patrones de bits iguales produce cero; dos patrones distintos de n bits no pueden diferir en un múltiplo distinto de cero de , por lo que la resta con vuelta al extremo del rango no crea una falsa igualdad. Un circuito de igualdad alternativo aplica XOR a los bits correspondientes de los operandos y comprueba si todos los resultados de XOR son cero.
Corrige el signo para la comparación menor que con signo
slt de RISC-V escribe el entero 1 con la anchura completa si el primer operando con signo es menor, o 0 en caso contrario. En una ALU dividida en secciones, la sección más significativa calcula una señal Set y la envía de vuelta a la entrada Less del bit 0. Todos los bits de resultado superiores se fuerzan a cero.
La señal Set correcta es
Cuando no hay desbordamiento, el signo de la diferencia sirve directamente. Cuando hay desbordamiento, ese signo está invertido respecto de la diferencia verdadera, por lo que aplicar XOR con 1 lo corrige.
Compara 7 con −8 en cuatro bits. La resta 0111 + 0111 + 1 da 1111. Su signo sugiere una diferencia negativa, pero la diferencia exacta es 15, fuera del rango de −8 a 7. El desbordamiento es 1, por lo que la señal Less corregida es 1 XOR 1 = 0. El resultado de slt es 0000, lo que indica correctamente que 7 no es menor que −8.
Usa el préstamo para la comparación menor que sin signo
La comparación sin signo usa una señal distinta:
para una resta realizada con la segunda entrada invertida y acarreo inicial 1. Un acarreo de salida de 0 significa que se necesitó un préstamo, por lo que el primer operando sin signo es menor.
| Patrones de entrada | Comparación con signo | Comparación sin signo |
|---|---|---|
0111, 1000 | 7 < −8 es falso | 7 < 8 es verdadero |
1000, 0111 | −8 < 7 es verdadero | 8 < 7 es falso |
Esta distinción aparece en slt frente a sltu, y en los saltos condicionales blt frente a bltu y bge frente a bgeu. Ni el signo del resultado por sí solo ni un «indicador de negativo» genérico responden a ambas preguntas.
Aplica la comparación en software
Una comprobación de límites sin signo puede rechazar tanto los índices negativos como los índices iguales o superiores a la longitud del arreglo:
bgeu x10, x11, IndexOutOfBounds
Aquí x10 contiene el índice con signo y x11 contiene una longitud no negativa que cabe en el rango con signo. Un índice negativo, reinterpretado sin signo, es al menos y, por tanto, supera cualquiera de esas longitudes. La condición sobre la longitud importa: hace que una sola comparación sin signo sea suficiente.
Las conversiones del lenguaje también pueden cambiar el significado de una comparación. Con un unsigned int de C de 32 bits, -1 < 0u es falso porque −1 se convierte en 4 294 967 295 antes de la comparación. Sigue la conversión antes de razonar a partir del signo menos escrito.
Puntos clave
- Zero comprueba todos los bits del resultado, por lo que la resta puede implementar la igualdad.
- La comparación menor que con signo usa el signo de la diferencia XOR el desbordamiento con signo.
- La comparación menor que sin signo usa el préstamo de la resta.
- La puesta a uno si es menor escribe 0 o 1 con la anchura completa del resultado.
- Una comprobación de límites sin signo detecta índices negativos cuando la longitud cabe en el rango no negativo con signo.
- Las conversiones pueden cambiar una comparación con signo a una sin signo.
2.3 Acelera la suma con anticipación de acarreo
El acarreo de un sumador de propagación debe atravesar cada bit en orden. La anticipación de acarreo sustituye esa espera secuencial por una lógica que predice los acarreos a partir de los bits de los operandos y del acarreo inicial.
Describe el comportamiento de acarreo de cada bit
Sean la generación y la propagación
Estas son expresiones booleanas: la multiplicación es AND y la suma es OR. La generación vale 1 cuando el bit crea un acarreo independientemente del acarreo de entrada. La propagación vale 1 cuando un acarreo de entrada puede pasar. La relación de recurrencia es
Un bit con ambas entradas a 1 genera un acarreo; un bit con una entrada a 1 transmite un acarreo; un bit con ambas entradas a 0 lo detiene. Con esta definición mediante OR, un bit que genera también tiene propagación 1, lo que no cambia la fórmula del acarreo.
Desarrolla la dependencia
Sustituye la expresión de cada acarreo anterior:
Ahora cada expresión depende de señales derivadas de los operandos y del acarreo inicial, no de una cadena secuencial de salidas de acarreo intermedias. Una vez disponibles los acarreos, cada bit de suma sigue siendo la operación XOR de sus dos entradas y su acarreo de entrada.
Para 1011 + 0110 con acarreo inicial 0, la generación desde el bit 0 hacia arriba es 0, 1, 0, 0 y la propagación es 1, 1, 1, 1. Así, los acarreos de entrada a los bits del 1 al 4 son 0, 1, 1, 1. Los cuatro bits del resultado son 0001 con acarreo de salida 1, que representan 11 + 6 = 17.
Construye grupos en lugar de puertas gigantes
Un bloque de cuatro bits tiene las señales de grupo
Su acarreo de salida es . Un segundo nivel de anticipación combina estas señales de bloque con la misma regla. Cuatro bloques de cuatro bits y una unidad de anticipación de grupo forman un sumador de 16 bits. La agrupación adicional permite diseños más anchos; los sumadores de prefijos paralelos, como el de Kogge–Stone, organizan estas relaciones en una red rápida.
En un modelo sencillo de retardos de puertas, la propagación de acarreo cuesta unos dos retardos de puerta por bit, o 32 para 16 bits. Un diseño de anticipación de dos niveles puede entregar el último acarreo en unos cinco: uno para las señales de bits, dos para las señales de grupo y dos para el acarreo de grupo. Esta estimación cuenta niveles lógicos y supone que se dispone de las puertas necesarias; el retardo real también depende del tamaño de las puertas y del cableado. La agrupación intercambia más hardware por un camino de acarreo que crece aproximadamente de forma logarítmica con la anchura.
Un sumador de selección de acarreo emplea el área de otra forma: calcula un bloque superior dos veces, una para acarreo de entrada 0 y otra para acarreo de entrada 1. Un multiplexor selecciona el resultado correcto cuando llega el acarreo del bloque inferior.
Algunos sumadores definen la propagación con XOR en lugar de OR. Eso también da acarreos correctos y hace que la suma sea . Mantén la definición elegida de forma coherente al derivar la lógica de grupo.
Puntos clave
- La generación crea un acarreo; la propagación transmite un acarreo de entrada.
- Desarrollar las ecuaciones de acarreo elimina la dependencia secuencial de cada salida de acarreo anterior.
- La generación y la propagación de grupo permiten que los sumadores anchos usen varios niveles de anticipación.
- La anticipación y la selección de acarreo intercambian área del circuito por velocidad sin cambiar la suma.
3Multiplica y divide enteros mediante hardware
La multiplicación combina productos parciales desplazados; la división determina un dígito del cociente a partir de un resto que cambia. Sigue ambos procesos en registros pequeños y después observa cómo los operandos con signo cambian el seguimiento de los valores. Los multiplicadores más rápidos forman y reducen muchos productos parciales a la vez, mientras que los divisores deben gestionar dependencias entre pasos. Las instrucciones de RISC-V ofrecen mitades de productos, cocientes y restos con reglas precisas para entradas excepcionales.
3.1 Multiplica mediante desplazamiento y suma
Cada bit del multiplicador binario elige una copia desplazada del multiplicando o cero. Sumar esos productos parciales da el resultado. Un operando de n bits por uno de m bits puede requerir n + m bits, por lo que dos operandos de 32 bits necesitan un producto completo de 64 bits.
Sigue el desplazamiento y la suma
Para operandos sin signo de n bits, inicializa un producto de 2n bits a cero. Repite n veces: comprueba el bit menos significativo del multiplicador, suma el multiplicando actual si ese bit es 1, desplaza el multiplicando a la izquierda y desplaza el multiplicador a la derecha. El registro del multiplicando debe ser lo bastante ancho para conservar sus copias desplazadas.
Para 6 × 5 con cuatro bits, el multiplicador es 0101:
| Paso | Bit menos significativo del multiplicador | Multiplicando desplazado | Producto acumulado |
|---|---|---|---|
| 1 | 1 | 0000 0110 | 0000 0110 |
| 2 | 0 | 0000 1100 | 0000 0110 |
| 3 | 1 | 0001 1000 | 0001 1110 |
| 4 | 0 | 0011 0000 | 0001 1110 |
El producto final es 30. El bit que se comprueba y la dirección del desplazamiento actúan conjuntamente: comprobar el bit más significativo mientras se desplaza el multiplicador a la derecha emparejaría los bits con los pesos incorrectos. Este diseño secuencial tarda n pasos, incluidos los pasos cuyo bit del multiplicador es cero.
Comparte espacio de registro
El primer diseño usa un registro de multiplicando y un sumador de 2n bits. Un diseño optimizado mantiene el multiplicando fijo en n bits, coloca el multiplicador en la mitad menos significativa de un registro de producto de 2n bits e inicializa la mitad más significativa a cero.
Cuando el bit menos significativo es 1, suma el multiplicando a la mitad más significativa. Conserva el acarreo de salida del sumador en un bit adicional y después desplaza ese acarreo y ambas mitades del producto juntos a la derecha. Los bits del multiplicador salen por la derecha a medida que los bits del producto ocupan el espacio que liberan. Descartar el acarreo estropea los productos grandes: con operandos de cuatro bits, 15 × 15 se convertiría incorrectamente en 1 en lugar de 225. Con un paso por ciclo de reloj, la implementación sencilla de 32 bits tarda unos 32 ciclos.
Ten presente la anchura del producto
Un producto sin signo cabe en n bits exactamente cuando los n bits más significativos del producto completo son cero. Para 6 × 5, el resultado completo es 0001 1110; almacenar solo 1110 da 14. La multiplicación en sí fue correcta, pero el destino estrecho descartó parte de ella.
Un desplazamiento de k posiciones a la izquierda multiplica por cuando el resultado cabe. La multiplicación por 8 se convierte en un desplazamiento de tres posiciones; la multiplicación por 10 puede usar dos copias desplazadas:
(x << 3) + (x << 1)
La operación aritmética es . Las reglas de anchura y del lenguaje de programación siguen aplicándose a los desplazamientos y a la suma; esta transformación no crea más bits de resultado.
Interpreta las mitades del resultado de RISC-V
mul devuelve los XLEN bits menos significativos, donde XLEN es la anchura del registro de enteros. mulhu devuelve la mitad más significativa para operandos sin signo. Las instrucciones para la mitad más significativa con signo son mulh para dos operandos con signo y mulhsu para un primer operando con signo y un segundo operando sin signo.
El software que solicita el producto completo puede emitir la instrucción adecuada para la mitad más significativa seguida de mul con los mismos operandos. Una implementación puede fusionar el par. El resultado menos significativo por sí solo no permite determinar si un producto sin signo cabe; la mitad más significativa proporciona esa información.
Puntos clave
- Cada bit del multiplicador selecciona un producto parcial desplazado o cero.
- El producto completo puede requerir la suma de las anchuras de los operandos.
- El desplazamiento y suma secuencial tarda un paso por cada bit del multiplicador.
- El multiplicador compacto debe conservar el acarreo de la suma antes de desplazar.
- Un producto sin signo cabe en un destino estrecho exactamente cuando su mitad más significativa es cero.
- RISC-V proporciona una instrucción de multiplicación para la mitad menos significativa y tres para la mitad más significativa según la interpretación.
3.2 Multiplica números con signo y aplica técnicas de multiplicación rápida
La multiplicación con signo debe tratar los signos de los operandos sin perder el valor más negativo. El hardware más rápido también necesita una forma de reducir muchos productos parciales sin esperar cada vez a una suma completa con propagación de acarreo.
Multiplica magnitudes de forma segura
Un método registra los signos, forma magnitudes sin signo de n bits, las multiplica para obtener 2n bits y cambia el signo del producto completo si exactamente un operando era negativo. Para −8 en cuatro bits, los bits de magnitud 1000 representan el valor sin signo 8. No pueden interpretarse como un valor positivo con signo de cuatro bits.
Los n bits menos significativos del producto son idénticos en las interpretaciones con y sin signo. 1111 × 0010 da 30 sin signo (0001 1110) o −2 con signo (1111 1110). Ambas mitades menos significativas son 1110; solo difieren las mitades más significativas. Por eso una instrucción mul sirve para ambas interpretaciones.
Sigue las decisiones de Booth
El algoritmo de Booth trabaja directamente con complemento a dos. Da al acumulador n + 1 bits y extiende el multiplicando con signo hasta esa anchura, para que quepan tanto él como su opuesto. Inicializa el acumulador a cero, coloca el multiplicador en su registro de n bits y añade un bit adicional inicializado a cero.
Examina como un par el bit menos significativo del multiplicador y el bit añadido:
| Par | Operación del acumulador |
|---|---|
10 | Restar el multiplicando |
01 | Sumar el multiplicando |
00 o 11 | Dejarlo sin cambios |
Después de cada decisión, desplaza aritméticamente a la derecha todo el registro formado por el acumulador, el multiplicador y el bit adicional. Repite n veces; descarta el bit añadido y el bit de signo superior redundante del acumulador para obtener el producto de 2n bits.
Para 2 × (−3), usa el multiplicando 00010, el multiplicador 1101 y el acumulador 00000. Los pares son 10, 01, 10, 11. Después de las respectivas operaciones y desplazamientos, el acumulador y el multiplicador son 11111 0110, 00000 1011, 11111 0101 y 11111 1010. Los ocho bits menos significativos del producto 1111 1010 representan −6.
Un desplazamiento lógico insertaría cero en el extremo superior y alteraría los resultados parciales negativos. El bit adicional del acumulador también importa: restar un multiplicando de n bits con el valor más negativo necesita un valor positivo que no está disponible en n bits con signo.
Reduce el trabajo y los caminos de acarreo
La recodificación de Booth sustituye una secuencia de bits 1 por una resta en su extremo menos significativo y una suma por encima de su extremo más significativo. Por ejemplo, 126 es 128 − 2. Los bits alternantes pueden no suponer ningún ahorro. Booth en base 4 examina dos bits del multiplicador por paso y usa dígitos de −2 a +2, lo que reduce el número de productos parciales.
Un multiplicador rápido forma productos parciales en paralelo. Un sumador de acarreo almacenado comprime tres palabras en dos sin propagar acarreos por la palabra. Los árboles de Wallace o Dadda repiten esa reducción y después usan un último sumador con propagación de acarreo. Reducir 32 filas a dos requiere ocho niveles de acarreo almacenado. La segmentación permite tener varios productos en curso; aceptar uno en cada ciclo no significa que cada uno termine en un ciclo.
Para un resultado con signo reducido a n bits, cada bit de la mitad más significativa debe ser igual al bit de signo de la mitad menos significativa. −8 × −1 en cuatro bits da el producto completo 0000 1000. La mitad más significativa es cero, pero el bit de signo conservado es 1, por lo que +8 no cabe en el destino con signo.
Puntos clave
- Las magnitudes sin signo conservan la magnitud del operando con signo más negativo.
- Los productos con y sin signo comparten su mitad menos significativa, pero pueden tener mitades más significativas distintas.
- Booth usa un bit adicional en el acumulador, decisiones sobre pares de bits y desplazamientos aritméticos a la derecha.
- Las secuencias de bits 1 pueden sustituirse por dos operaciones de Booth; los patrones alternantes pueden no ahorrar trabajo.
- Los árboles de acarreo almacenado reducen muchos productos parciales antes de una suma final con propagación de acarreo.
- La segmentación separa la latencia del resultado de la frecuencia con que pueden comenzar nuevos productos.
- Un producto con signo cabe en un destino estrecho cuando la mitad más significativa es la extensión de signo de la mitad menos significativa.
3.3 Divide enteros y trata los casos especiales
La división produce un cociente y un resto relacionados por
Para un divisor sin signo distinto de cero, el resto es no negativo y menor que el divisor. Un dividendo y un divisor de n bits necesitan un cociente y un resto de n bits.
Produce el cociente un bit cada vez
Lee los bits del dividendo desde el extremo más significativo. Duplica el resto parcial, incorpora el siguiente bit y comprueba si el divisor cabe. Si cabe, réstalo y escribe el bit de cociente 1; en caso contrario, conserva el resto parcial y escribe 0.
Para 0111 dividido por 0010, los restos parciales tras incorporar cada bit son 0, 1, 3 y 3. Los dos primeros son menores que 2, por lo que sus bits de cociente son 0. Cada 3 permite una resta, que deja resto 1 y bit de cociente 1. El cociente es 0011 y el resto 0001: 3 × 2 + 1 = 7.
La división con restauración prueba primero la resta. Si el resultado de prueba es negativo, vuelve a sumar el divisor y escribe 0; en caso contrario, conserva el resultado y escribe 1. Detecta el fallo con un préstamo o una diferencia con signo de n + 1 bits. Una prueba del signo de n bits no es segura: 0 − 9 en cuatro bits vuelve al rango como 0111, cuyo bit más significativo es 0 a pesar del préstamo.
El hardware compacto coloca el dividendo en la mitad menos significativa de un registro de 2n bits y el resto parcial en la mitad más significativa. Lo desplaza a la izquierda en cada paso e inserta los bits del cociente por la derecha. Al terminar, la mitad más significativa contiene el resto y la menos significativa, el cociente.
La división sin restauración lleva adelante un resultado de prueba negativo y suma el divisor durante el paso siguiente en lugar de restaurar inmediatamente. Un resto parcial final negativo necesita una última suma de restauración. La división SRT selecciona varios bits del cociente por paso usando los bits iniciales del divisor y del resto; las entradas ausentes en una tabla de selección de este tipo causaron el error FDIV del Pentium de 1994. La división sigue dependiendo de cada resto parcial anterior.
Aplica la división con signo con truncamiento
Divide las magnitudes, cambia el signo del cociente si los signos difieren y da a un resto distinto de cero el signo del dividendo.
| Cálculo | Cociente | Resto |
|---|---|---|
| −7 dividido por 2 | −3 | −1 |
| 7 dividido por −2 | −3 | 1 |
| −7 dividido por −2 | 3 | −1 |
Estos resultados truncan el cociente hacia cero y conservan la identidad de la división. RISC-V, Java y C desde C99 usan esta regla. En cambio, // de Python redondea hacia abajo: -7 // 2 es −4 y -7 % 2 es 1.
Trata las entradas excepcionales
La división por cero en RISC-V devuelve un cociente con todos los bits activados y el dividendo original como resto. El caso de desbordamiento con signo, el valor más negativo dividido por −1, devuelve el valor más negativo como cociente y cero como resto. Ninguno de los dos casos genera una excepción síncrona. x86 genera una excepción de error de división en ambos. El software que debe informar de errores comprueba primero si el divisor es cero y también comprueba el par que produce desbordamiento con signo.
Un desplazamiento lógico a la derecha divide valores sin signo por potencias de dos, redondeando hacia abajo. Un desplazamiento aritmético también redondea hacia abajo los valores negativos: −5 desplazado una posición a la derecha se convierte en −3, mientras que la división con truncamiento por 2 da −2. Para implementar el truncamiento con un desplazamiento, suma a una entrada negativa antes de desplazar k posiciones a la derecha. Para −5 y k = 1, desplaza −4 para obtener −2.
Puntos clave
- El cociente y el resto deben satisfacer la identidad de la división.
- La división con restauración vuelve a sumar el divisor después de una resta de prueba fallida.
- Se necesita un préstamo o un bit adicional de diferencia para comprobar con seguridad una resta de prueba sin signo.
- La división con signo con truncamiento da a un resto distinto de cero el signo del dividendo.
- RISC-V define resultados sin excepción síncrona para la división por cero y el desbordamiento del cociente con signo.
- El desplazamiento aritmético a la derecha y la división con signo con truncamiento difieren para valores negativos con resto.
4Representa números reales en coma flotante según IEEE 754
La coma flotante almacena un signo, una escala y un conjunto limitado de bits significativos. Decodifica esos campos para distinguir el rango de la precisión y después usa los patrones de exponente reservados para reconocer ceros, subnormales, infinitos y valores NaN. Los valores especiales forman parte del sistema aritmético: permiten que los resultados diminutos se aproximen gradualmente a cero y que las operaciones excepcionales devuelvan resultados definidos mientras registran indicadores de estado.
4.1 Codifica y decodifica formatos binarios de IEEE 754
Un valor binario normal en coma flotante tiene la forma
El significando es el valor completo 1,f; la fracción almacenada contiene solo f. La normalización garantiza el 1 inicial, por lo que omitir este bit oculto aporta un bit de precisión.
Interpreta los tres campos
| Formato | Bits de signo | Bits de exponente | Bits de fracción | Sesgo | Precisión |
|---|---|---|---|---|---|
| binary16 | 1 | 5 | 10 | 15 | 11 bits |
| binary32 | 1 | 8 | 23 | 127 | 24 bits |
| binary64 | 1 | 11 | 52 | 1023 | 53 bits |
IEEE 754-2019 define estos formatos. Precisión simple y doble suelen significar binary32 y binary64. El orden almacenado es signo, exponente, fracción. Para un valor normal, resta el sesgo del campo de exponente sin signo:
Fracción significa la fracción binaria después de la coma, no sus bits interpretados como un entero. En binary32, los campos de exponente del 1 al 254 codifican exponentes de −126 a 127. Los campos 0 y 255 tienen significados especiales.
Un sesgo hace que los exponentes mayores tengan campos sin signo mayores. Para números positivos finitos, el orden sin signo de los patrones completos sigue el orden numérico. Los valores negativos y los NaN requieren un tratamiento adicional.
Codifica y decodifica
Para codificar −0,75, escribe su magnitud como . El signo es 1 y el campo de exponente es −1 + 127 = 126, o 01111110. Elimina el 1 inicial oculto y rellena la fracción con ceros. Los campos son 1 01111110 10000000000000000000000, lo que da 0xBF400000. En binary64 el mismo valor es 0xBFE8000000000000.
Para decodificar 0x41460000, divídelo en 0 10000010 10001100000000000000000. El campo de exponente es 130, por lo que el exponente verdadero es 3. El significando es
Multiplicar por 8 da 12,375. Escribir el 1 oculto en la fracción almacenada cambiaría el valor; almacenar −1 directamente en el campo de exponente incumpliría la regla del sesgo.
Distingue el rango de la precisión
binary32 alcanza aproximadamente , con un menor valor normal positivo de y unos siete dígitos decimales significativos. binary64 alcanza aproximadamente , con un menor valor normal positivo de y unos 15–16 dígitos significativos. binary16 tiene un máximo de 65 504, un menor valor normal positivo de , un menor valor subnormal positivo de y unos 3,3 dígitos decimales significativos.
La precisión cuenta dígitos significativos, no dígitos después de la coma decimal. Por ejemplo, binary32 almacena 1 234 567,89 como 1 234 567,875.
Dentro del intervalo de binary32 desde hasta , los valores normales adyacentes están separados por . Esta separación es una ulp, una unidad en la última posición. Justo por encima de 1 es , a menudo llamada épsilon de máquina. En la separación pasa a ser 2, por lo que 16 777 217 no está representado aunque quepan números mucho mayores. Más bits de exponente amplían el rango de escala; más bits de fracción acercan los valores representables para una escala dada.
Puntos clave
- Los formatos normales omiten de la fracción almacenada el 1 inicial garantizado.
- Decodifica un exponente normal restando su sesgo.
- binary16, binary32 y binary64 tienen una precisión de 11, 24 y 53 bits.
- El rango y la precisión son límites distintos.
- La separación entre números normales crece con el exponente.
4.2 Usa ceros, infinitos, valores NaN y números subnormales
Los patrones de exponente reservados permiten que IEEE 754 represente valores más allá de los números normalizados ordinarios. Clasifica siempre los campos antes de aplicar una fórmula de valor.
Reconoce los patrones reservados
| Campo de exponente | Campo de fracción | Significado |
|---|---|---|
| Todos los bits son cero | Cero | Cero con signo |
| Todos los bits son cero | Distinto de cero | Subnormal |
| Todos los bits son uno | Cero | Infinito con signo |
| Todos los bits son uno | Distinto de cero | NaN |
binary32 tiene +0 en 0x00000000 y −0 en 0x80000000. Se comparan como iguales, pero la división puede revelar el signo: 1 dividido por +0 da +∞, mientras que 1 dividido por −0 da −∞. Un resultado negativo diminuto que se redondea a cero se convierte en −0.
El infinito positivo es 0x7F800000; el mayor valor positivo finito es 0x7F7FFFFF. Con redondeo al más cercano, el desbordamiento aritmético devuelve un infinito con signo. Dividir un valor finito distinto de cero por cero también devuelve un infinito con signo, con un indicador de excepción diferente. Las operaciones posteriores gestionan el infinito de forma coherente: sumar 1 a +∞ deja +∞, multiplicarlo por −2 da −∞ y su inverso es +0.
Distingue NaN del infinito
Operaciones como cero dividido por cero, infinito menos sí mismo, cero por infinito y la raíz cuadrada real de −1 no tienen un resultado numérico significativo. Producen NaN, «valor no numérico», y señalan una operación inválida.
NaN es no ordenado: las comprobaciones de igualdad y de orden menor que o mayor que en las que interviene son falsas, mientras que la desigualdad es verdadera. En particular, x == NaN no puede detectar NaN. Usa isnan(x). Los NaN silenciosos normalmente se propagan por las operaciones aritméticas; los NaN señalizadores activan la excepción de operación inválida cuando se usan. En estos formatos binarios, el bit más significativo de la fracción distingue un NaN silencioso. El NaN silencioso canónico binary32 de RISC-V es 0x7FC00000.
Acércate gradualmente a cero
Un subnormal no tiene 1 oculto. Su exponente se fija en el menor exponente normal:
Para binary32, 0x00000001 es y 0x00400000 es . Para binary64 el menor valor positivo es . Usar el exponente menos el sesgo con un campo de exponente cero produciría un error de un factor de dos, incluso antes de añadir por error un 1 oculto.
Los subnormales proporcionan subdesbordamiento gradual: la precisión disminuye a medida que los valores se reducen, con una separación absoluta fija cerca de cero. Los valores finitos distintos en un formato siguen teniendo una diferencia representable distinta de cero. Los modos de reducción a cero eliminan esa protección y pueden acelerar el tratamiento de subnormales en algunos procesadores.
Interpreta los indicadores de excepción
IEEE 754 define operación inválida, división por cero, desbordamiento, subdesbordamiento y resultado inexacto. El tratamiento predeterminado devuelve un resultado y registra el estado; no tiene por qué detener la ejecución. Resultado inexacto significa que el resultado redondeado difiere del resultado exacto.
Con el tratamiento predeterminado, el subdesbordamiento requiere tanto un resultado diminuto como inexactitud. En binary32, es un subnormal exacto y no activa el subdesbordamiento. RISC-V registra NV, DZ, OF, UF y NX en fflags dentro de fcsr, y las excepciones de coma flotante no provocan excepciones síncronas aritméticas. Un infinito devuelto por sí solo no indica si se produjo desbordamiento o división por cero; examina el indicador.
Puntos clave
- Clasifica los campos de exponente reservados antes de decodificar un valor normal.
- Los ceros con signo se comparan como iguales, pero pueden producir infinitos de distinto signo.
- NaN es no ordenado y debe detectarse con una prueba de NaN.
- Los subnormales usan un 0 inicial y un exponente de uno menos el sesgo.
- El subdesbordamiento gradual conserva pequeñas diferencias que la reducción a cero puede borrar.
- Un subnormal exacto no activa el indicador de subdesbordamiento.
5Calcula y redondea con números en coma flotante
El hardware de coma flotante debe desplazar y combinar bits significativos antes de poder redondear la respuesta. Trabaja la alineación, la normalización y el redondeo, y después relaciona esos pasos con fallos de precisión conocidos. Los bits adicionales de redondeo distinguen un empate de un valor apenas superior, y la multiplicación y suma fusionadas conservan información que dos operaciones separadas pueden perder. Los mismos límites explican cambios en las sumas, contadores que se detienen y conversiones arriesgadas.
5.1 Suma y multiplica números en coma flotante
La aritmética en coma flotante trabaja con significandos y exponentes por separado. El resultado final debe ser el de la operación exacta redondeado al formato de destino, por lo que el movimiento intermedio de bits debe conservar suficiente información para esa última decisión.
Suma con un exponente compartido
La suma sigue cuatro etapas: alinear, operar, normalizar y redondear. Compara los exponentes y desplaza el significando del operando menor a la derecha tantas posiciones como indique su diferencia. Suma las magnitudes si los signos son iguales; réstalas si los signos son opuestos. Desplaza el resultado a la forma normalizada y ajusta su exponente. Después redondea y vuelve a normalizar si el redondeo crea un acarreo.
Usa significandos de cuatro bits para ver 0,5 + (−0,4375):
- Escribe los operandos como y .
- Alinea el segundo a .
- Resta las magnitudes: .
- Normaliza a , o 0,0625. No se perdió ningún bit distinto de cero, por lo que no hace falta cambiar el resultado mediante redondeo.
La cancelación puede requerir un desplazamiento de normalización grande a la izquierda. El hardware usa un restador de exponentes, un desplazador de alineación, un sumador de significandos, un contador de ceros iniciales y lógica de normalización y redondeo. Los sumadores de coma flotante suelen estar segmentados a lo largo de varios ciclos.
Un modelo decimal muestra por qué importan los dígitos adicionales: con cuatro dígitos significativos, 99,99 + 0,161 se alinea como a escala . El resultado intermedio exacto es 10,01510 a esa escala. Normaliza a y redondea a . Recortar demasiado pronto el sumando alineado perdería información necesaria para elegir 100,2.
Multiplica escalas y significandos
Multiplica los significandos, suma los exponentes verdaderos y aplica XOR a los signos. Con campos sesgados, resta el sesgo una vez:
antes de los ajustes de normalización. Dos significandos normales se multiplican para dar un valor desde 1 hasta 4, por lo que su producto necesita como máximo un desplazamiento de normalización a la derecha. El redondeo puede requerir otro ajuste; también hay que comprobar los límites del exponente.
Para 0,5 × (−0,4375), los campos de exponente de binary32 dan 126 + 125 − 127 = 124, o un exponente verdadero de −3. El producto de los significandos es . El XOR de los signos es 1, lo que da .
Redondea una vez con multiplicación y suma fusionadas
FMA calcula a × b + c con un redondeo después de la expresión completa. La multiplicación y la suma separadas redondean dos veces. En binary32, toma , y c = −1. Su producto exacto es . Una multiplicación separada lo redondea a 1, por lo que la suma devuelve cero. FMA conserva la pequeña diferencia del producto y devuelve .
F de RISC-V proporciona 32 registros de coma flotante, de f0 a f31; D amplía el mismo banco para precisión doble. flw/fsw y fld/fsd transfieren valores. Las operaciones aritméticas incluyen fadd.s, fmul.s, fdiv.s y fsqrt.s, con formas .d para precisión doble. fmadd.s calcula una multiplicación y suma fusionadas. Las comparaciones como flt.s escriben 0 o 1 en un registro de enteros, y fcvt convierte formatos o valores enteros.
Puntos clave
- La suma alinea los exponentes antes de combinar los significandos.
- La normalización cambia tanto la posición del significando como el exponente.
- Multiplicar campos de exponente con sesgo requiere restar un sesgo.
- El redondeo puede requerir una segunda normalización.
- FMA redondea una vez el producto y la suma completos.
- Las operaciones aritméticas F y D de RISC-V usan un banco de registros de coma flotante; las comparaciones devuelven valores de verdad enteros.
5.2 Redondea los resultados correctamente
Un formato finito no puede almacenar todos los resultados exactos. El redondeo correcto consiste en elegir el resultado representable requerido por la dirección de redondeo, como si la operación se hubiera calculado primero de forma exacta. La aritmética básica, la raíz cuadrada y FMA obedecen esta regla. Los bits de información y de signo de NaN no tienen por qué ser idénticos entre procesadores.
Elige una dirección de redondeo
| Dirección | Regla |
|---|---|
| roundTiesToEven | Valor más cercano; un empate exacto elige un último bit de significando igual a 0 |
| roundTowardPositive | Hacia +∞ |
| roundTowardNegative | Hacia −∞ |
| roundTowardZero | Hacia cero |
| roundTiesToAway | Valor más cercano; un empate exacto se aleja de cero |
Las primeras cuatro son obligatorias para implementaciones binarias; el desempate al par es el predeterminado. El desempate alejándose de cero es obligatorio para formatos decimales, y RISC-V también lo proporciona para operaciones binarias. Sus nombres son RNE, RUP, RDN, RTZ y RMM; una instrucción puede seleccionar un modo directamente o usar el modo dinámico de fcsr.
Con desempate al par al redondear a enteros, 2,5 se convierte en 2 y 3,5 en 4. En binario con significandos de cuatro bits, se redondea a y también se redondea a . El bit par pertenece al significando conservado, no al exponente ni a un dígito decimal mostrado.
Conserva la información de guarda, redondeo y adherente
Después de normalizar, conserva dos bits adicionales tras el significando de destino: guarda y redondeo. El bit adherente es la operación OR de cada bit posterior descartado. Registra si toda esa parte restante es cero.
Para redondear al más cercano, guarda 0 significa por debajo de la mitad. Guarda 1 con redondeo o adherente 1 significa por encima de la mitad. Guarda 1 con ambos indicadores posteriores a 0 significa un empate exacto. En un empate, incrementa el significando conservado solo si su bit menos significativo actual es 1.
Para una suma de 8 + 0,5625 con significandos de cuatro bits, la alineación da
Conserva 1.000; guarda es 1, redondeo es 0 y adherente es 1 porque la parte restante contiene un 1. El valor está por encima de la mitad, por lo que se incrementa a . Descartar el bit adherente convertiría esto falsamente en un empate y elegiría 8.
Un bit adherente informa sobre todos los bits perdidos, no simplemente sobre el tercer bit después de la parte conservada. Durante el desplazamiento, una vez que cualquier bit perdido es 1, el estado adherente permanece en 1 para esa parte acumulada.
Interpreta el error y el desbordamiento
Para resultados finitos dentro del rango, el redondeo al más cercano tiene un error absoluto de como máximo media ulp; el redondeo dirigido tiene un error inferior a una ulp. Para resultados normales binary32, el límite relativo habitual del redondeo al más cercano es ; para binary64 es . Los resultados subnormales requieren razonar con el error absoluto porque su precisión relativa disminuye.
La dirección de redondeo también controla los resultados del desbordamiento. Un desbordamiento positivo da +∞ con redondeo al más cercano o hacia positivo, pero el mayor valor positivo finito con redondeo hacia cero o hacia negativo. El desbordamiento negativo produce el comportamiento simétrico.
Las conversiones a enteros tienen sus propias reglas. En C, las conversiones representables como (int)2.7 y (int)-2.7 truncan a 2 y −2, independientemente de la dirección de redondeo actual de coma flotante. Comprueba tanto el rango del destino como la parte fraccionaria descartada.
Puntos clave
- El redondeo correcto elige el valor de destino a partir del resultado exacto y la dirección de redondeo.
- Un empate exacto al redondear al más cercano elige el vecino cuyo bit menos significativo conservado es 0.
- Guarda y redondeo conservan dos bits adicionales; el bit adherente registra cualquier parte posterior distinta de cero.
- Un bit adherente distinto de cero puede distinguir un resultado superior a la mitad de un empate.
- La dirección de redondeo controla si el desbordamiento devuelve infinito o un extremo finito.
5.3 Predice y evita errores de precisión
Los errores de coma flotante suelen derivarse directamente de una separación finita entre valores. Distingue el error ya presente en los operandos almacenados del redondeo realizado por una operación y de la información perdida durante la conversión.
Identifica el error de representación
Una fracción irreducible tiene un desarrollo binario finito exactamente cuando su denominador es una potencia de dos. Valores como 0,5, 0,25 y 0,375 son exactos. El desarrollo de 0,1 se repite, por lo que binary32 almacena 0x3DCCCCCD, aproximadamente 0,10000000149011612. binary64 también almacena una aproximación.
En consecuencia, 0.1 + 0.2 en binary64 produce 0,30000000000000004, diferente del valor almacenado más cercano a 0,3. Un resultado mostrado breve como 0.1 puede ser el decimal más corto que se convierte de nuevo a los mismos bits almacenados; no demuestra que sea exacto.
Para resultados finitos aproximados, usa una tolerancia elegida para el problema, por ejemplo
La tolerancia absoluta trata los valores cercanos a cero; la tolerancia relativa se ajusta a la magnitud. Las tolerancias deben reflejar el cálculo y el error aceptable, no solo el número de dígitos mostrados.
Observa cómo una suma pierde una entrada pequeña
La absorción ocurre con redondeo al más cercano cuando un sumando pequeño no puede desplazar un operando grande hasta su siguiente vecino representable. En binary32, 16 777 216 + 1 se redondea de nuevo a 16 777 216: los valores vecinos están separados por dos y este empate selecciona el significando par. Por tanto, un contador float que suma 1 puede dejar de avanzar.
Cambiar el orden de la suma puede cambiar la respuesta. Con binary32 x = −1,5 × 10³⁸, y = 1,5 × 10³⁸ y z = 1, (x + y) + z da 1. Pero y + z se redondea a y, por lo que x + (y + z) da cero. La suma no es asociativa. Las reducciones paralelas pueden cambiar su agrupación cuando cambia el número de hilos, lo que afecta a los bits finales.
El redondeo repetido también se acumula: sumar 0,1 en binary32 diez millones de veces a un total binary32 da 1 087 937 en lugar de 1 000 000. Un acumulador más ancho reduce la pérdida por redondeo. Sumar primero las magnitudes menores también puede conservar contribuciones que un total acumulado grande absorbería.
Distingue la cancelación de una resta inexacta
La cancelación elimina dígitos iniciales compartidos por operandos casi iguales. La resta en sí puede ser exacta mientras que los errores anteriores de los operandos pasan a ser grandes en relación con la respuesta pequeña. En binary32, 1,0000001 se almacena como . Restar 1 da aproximadamente en lugar de , un error relativo de aproximadamente 19 %.
Comprueba las conversiones y la elección de formato
binary64 representa exactamente todos los enteros de 32 bits. binary32 no: 16 777 217 se redondea a 16 777 216 con desempate al par. Por encima de , binary64 también deja de representar algunos enteros. Convertir un valor en coma flotante a un tipo entero más pequeño puede superar por completo su rango.
En el primer vuelo del Ariane 5 en 1996, una conversión fuera de rango de coma flotante de 64 bits a entero con signo de 16 bits apagó los sistemas de referencia inercial y contribuyó a la pérdida del cohete. En el fallo del Patriot de 1991 en Dhahran, una aproximación truncada de 0,1 en punto fijo acumuló unos 0,34 s de error de tiempo tras unas 100 horas, lo que desplazó la ventana de seguimiento unos 687 m. Fue un error de representación en punto fijo, no una operación de coma flotante de IEEE.
Elige binary64 para una mayor precisión de uso general, binary32 cuando su menor uso de memoria se adapte a la tarea y binary16 o bfloat16 para cargas de trabajo adecuadas de baja precisión. bfloat16 tiene ocho bits de exponente y siete bits de fracción. Las cantidades monetarias exactas deben expresarse en unidades monetarias mínimas enteras o en un tipo decimal.
Puntos clave
- Una fracción binaria finita requiere un denominador que sea potencia de dos después de reducirla.
- Una salida decimal corta puede ocultar un error de representación.
- La absorción y el redondeo repetido pueden cambiar sumas y detener contadores en coma flotante.
- La suma en coma flotante no es asociativa, por lo que la agrupación afecta a la reproducibilidad.
- La cancelación expone el error anterior de los operandos en relación con una diferencia pequeña.
- Las conversiones necesitan comprobaciones tanto de precisión como de rango.
- La elección del formato depende de la precisión, el rango y el coste de almacenamiento requeridos.
Ejemplos de Aritmética de computadores
1Sigue un sumador y evalúa su resultado
12 pasos
- 1IntroducciónPrimero los bits, después la interpretación
Un sumador de 8 bits conserva ocho bits de suma y produce un acarreo de salida. Los mismos bits de suma pueden representar un valor sin signo o un valor con signo en complemento a dos. Que sean iguales al resultado previsto depende de esa interpretación.
Empieza con 58 + 27. Ambos valores caben en cualquiera de las dos interpretaciones, por lo que puedes seguir primero el circuito y plantear después las preguntas sobre el rango.
- 2ExplicaciónUna posición combina tres bits
Un sumador completo combina dos bits de entrada y el acarreo de entrada. Su suma es la operación XOR de ellos. Su acarreo de salida es 1 cuando al menos dos de las tres entradas son 1.
En un sumador de propagación, ese acarreo de salida se convierte en el acarreo de entrada de la posición siguiente. Solo la posición menos significativa recibe directamente el acarreo inicial. Para una suma ordinaria, el acarreo inicial es cero.
- 3EjemploTrabaja las columnas menos significativas
Escribe 58 como
0011 1010y 27 como0001 1011. Comenzando por la derecha, el bit 0 suma 0 y 1 con acarreo 0, lo que da suma 1 y acarreo 0.El bit 1 suma 1 y 1, lo que da suma 0 y acarreo 1. El bit 2 suma entonces 0 y 0 con ese acarreo, lo que da suma 1 y acarreo 0. El acarreo debe incluirse donde llega, incluso cuando ambos bits de los operandos son cero.
- 4EjemploTermina la suma
Continúa por las posiciones más significativas. El bit 3 suma dos bits 1, lo que produce suma 0 y acarreo 1. El bit 4 combina dos bits 1 con ese acarreo, lo que produce suma 1 y acarreo 1. El bit 5 combina 1, 0 y 1, lo que produce suma 0 y acarreo 1. El bit 6 recibe ese acarreo y produce 1.
El resultado completo es
0101 0101, o 85. El acarreo final es 0 y el resultado con signo sigue siendo positivo. - 5DesafíoElige la extensión
Debe sumarse un operando con signo de 4 bits
1011a un operando de 8 bits. ¿Qué patrón de 8 bits conserva su valor y qué haría la extensión con ceros?---reveal---
La extensión de signo da
1111 1011, que sigue siendo −5. La extensión con ceros da0000 1011, o +11, y cambia la entrada antes de la suma. La extensión sigue la interpretación del operando, no la anchura del otro operando. - 6EjemploReutiliza el sumador para restar
Ahora calcula 58 − 27. Invierte
0001 1011para obtener1110 0100y fija el acarreo inicial en 1. Suma0011 1010+1110 0100+ 1 para obtener0001 1111, con acarreo de salida 1.El resultado es 31. Para esta resta sin signo, un acarreo de salida de 1 significa que no hay préstamo. Invertir el segundo operando sin el 1 inicial produciría en cambio 30.
- 7Idea claveEl acarreo y el desbordamiento responden a preguntas distintas
El acarreo de salida indica si una suma sin signo superó los bits disponibles. El desbordamiento con signo comprueba el rango con signo: los sumandos del mismo signo no deben producir un resultado de signo opuesto.
El hardware calcula el desbordamiento con signo aplicando XOR al acarreo de entrada y al de salida del bit de signo. Puede haber acarreo sin desbordamiento con signo, desbordamiento con signo sin acarreo, ambos o ninguno.
- 8EjemploUna suma válida sin signo puede fallar con signo
Suma 90 y 60 en 8 bits. El resultado es
1001 0110, con acarreo de salida 0. El valor sin signo 150 cabe en el rango de 0 a 255.Ambas entradas con signo son positivas, pero la interpretación con signo almacenada es −106. Por tanto, el desbordamiento con signo es 1. El patrón almacenado sigue siendo los ocho bits menos significativos de 150; es el rango del destino con signo el que no puede contener el resultado exacto.
- 9DesafíoInterpreta ambas señales
Un sumador de 8 bits suma
1111 0110y0001 0100, y produce0000 1010con acarreo de salida 1. ¿Qué indican las interpretaciones sin signo y con signo?---reveal---
Sin signo, 246 + 20 = 266 se desborda y almacena 10. Con signo, −10 + 20 = 10 cabe, por lo que el desbordamiento con signo es 0. Una suma de signos opuestos no puede desbordar el rango con signo, aunque este cálculo de bits tenga un acarreo de salida.
- 10ConexiónEl programa decide cómo responder
addde RISC-V devuelve los bits menos significativos sin indicadores ni excepción síncrona por desbordamiento. Una comprobación sin signo puede comparar la suma con una entrada; un resultado menor indica que se ha vuelto al extremo del rango. La comprobación con signo debe usar en cambio relaciones con signo.Las reglas del lenguaje también importan. La suma sin signo de C vuelve al extremo del rango, mientras que el desbordamiento con signo es indefinido. La suma de enteros de Java vuelve al extremo del rango y los enteros de Python crecen. Seguir correctamente los bits por sí solo no determina el comportamiento a nivel del lenguaje.
- 11DesafíoRelaciona la resta con el rango con signo
Una ALU de 8 bits calcula 100 − (−35). ¿Qué valor almacenado con signo resulta y qué interpretación necesita un aviso de desbordamiento?
---reveal---
El resultado exacto con signo es 135, cuyos ocho bits menos significativos son
1000 0111, interpretados como −121. La resta con signo se desborda porque las entradas tienen signos distintos y el signo del resultado difiere del de 100. Interpretar el segundo patrón como el valor sin signo 221 da en cambio 100 − 221, que necesita un préstamo sin signo. - 12RepasoElige una comprobación de rango después de seguir los bits
La suma y la resta comparten sumadores completos; la inversión y el acarreo inicial seleccionan la resta. Extiende cada entrada según su significado antes de operar.
Después, comprueba el acarreo o el préstamo para valores sin signo y el desbordamiento para valores con signo. Aplica entonces las reglas del procesador y del lenguaje. La aritmética de saturación toma otra decisión: limita un resultado fuera de rango a un extremo en lugar de conservar los bits menos significativos tras volver al rango.
2Construye una ALU que compare correctamente
14 pasos
Guarda esta unidad para seguir cada Lección Interactiva paso a paso.
- 1IntroducciónVarios resultados, una salida seleccionada
- 2ExplicaciónRepite una sección de un bit
- 3EjemploDecodifica los controles de un diseño
- 4DesafíoConstruye NOR con las mismas puertas
- 5ConexiónDesplaza las distancias seleccionadas
- 6ExplicaciónReduce el resultado a Zero
- 7EjemploObserva un signo engañoso de la diferencia
- 8DesafíoInterpreta los mismos patrones de dos formas
- 9ExplicaciónDescribe un acarreo antes de que llegue
- 10EjemploPredice el acarreo final de un bloque
- 11DesafíoUn acarreo generado encuentra una parada
- 12Idea claveUsa puertas para acortar la espera
- 13DesafíoMantén correcta la comparación con un sumador más rápido
- 14RepasoSepara selección, interpretación y velocidad
3Sigue un producto y un cociente a través del hardware
18 pasos
Guarda esta unidad para seguir cada Lección Interactiva paso a paso.
- 1IntroducciónLos productos combinan filas; los cocientes se construyen mediante decisiones
- 2EjemploElige productos parciales para 9 por 6
- 3EjemploCompleta las contribuciones seleccionadas
- 4Idea claveConserva el acarreo del multiplicador compacto
- 5DesafíoComprueba un producto sin signo en un destino estrecho
- 6ExplicaciónConserva la magnitud con signo en bits sin signo
- 7ExplicaciónPrepara el registro de Booth
- 8EjemploEjecuta los dos primeros pasos de Booth
- 9EjemploTermina el producto con signo
- 10DesafíoComprueba si el producto con signo cabe tras multiplicar
- 11ConexiónComprime filas en lugar de terminar cada suma
- 12EjemploIncorpora los primeros bits del dividendo
- 13EjemploCompleta el cociente y el resto
- 14DesafíoAplica la regla del resto con signo
- 15ConsejoUsa el préstamo para la resta de prueba
- 16DesafíoRelaciona un atajo de división con la multiplicación
- 17ConexiónInterpreta los resultados excepcionales de RISC-V
- 18RepasoComprueba el invariante y el destino
4Decodifica los bits de coma flotante antes de operar
12 pasos
Guarda esta unidad para seguir cada Lección Interactiva paso a paso.
- 1IntroducciónUna escala y un conjunto limitado de dígitos
- 2EjemploNormaliza la magnitud
- 3EjemploSuma el sesgo y reúne los campos
- 4DesafíoDecodifica un nuevo valor normal
- 5ExplicaciónEl rango no garantiza el detalle de los enteros
- 6ExplicaciónClasifica primero los exponentes reservados
- 7EjemploDecodifica un subnormal sin un 1 oculto
- 8Idea claveUn resultado diminuto exacto no necesita el indicador de subdesbordamiento
- 9DesafíoDistingue el infinito de un resultado inválido
- 10ConsejoComprueba NaN sin usar la igualdad
- 11DesafíoRelaciona la codificación con el subdesbordamiento gradual
- 12RepasoInterpreta los campos antes de evaluar un valor
5Alinea, redondea y explica la pérdida de precisión
18 pasos
Guarda esta unidad para seguir cada Lección Interactiva paso a paso.
- 1IntroducciónConserva la información hasta la decisión de redondeo
- 2EjemploAlinea una suma
- 3EjemploNormaliza antes de elegir el vecino
- 4ExplicaciónMultiplica con una corrección del sesgo
- 5DesafíoCorrige un cálculo del exponente
- 6ExplicaciónUn bit conservado par resuelve un empate
- 7EjemploSigue los bits de guarda, redondeo y adherente
- 8DesafíoDistingue un empate de un valor cercano
- 9ConexiónLa dirección de redondeo cambia los resultados negativos
- 10Idea claveFMA conserva un producto hasta después de la suma
- 11ExplicaciónUna entrada decimal puede llegar ya redondeada
- 12EjemploUn contador alcanza una barrera de separación
- 13DesafíoPredice el efecto de una agrupación distinta
- 14Idea claveUna resta exacta puede revelar un error anterior
- 15ConsejoElige una tolerancia que funcione cerca de cero
- 16DesafíoComprueba una conversión de ida y vuelta de un entero
- 17DesafíoCombina alineación, bit adherente y absorción
- 18RepasoLocaliza la pérdida de información
Ejercicios de Aritmética de computadores
Set 1: Redes de acarreo y formación de productos10 Preguntas de Práctica
Pregunta 1 de 10
Mostrar respuestaOcultar respuesta
Pregunta 2 de 10
Mostrar respuestaOcultar respuesta
Pregunta 3 de 10
Mostrar respuestaOcultar respuesta
0010 0001; conservar cuatro bits deja 0001, o 1. La mitad más significativa 0010 no es el resultado conservado y su valor distinto de cero demuestra que reducir la anchura pierde información, aunque el patrón menos significativo parezca un entero pequeño válido.Pregunta 4 de 10
Mostrar respuestaOcultar respuesta
Pregunta 5 de 10
Mostrar respuestaOcultar respuesta
Pregunta 6 de 10
Mostrar respuestaOcultar respuesta
Pregunta 7 de 10
Mostrar respuestaOcultar respuesta
Pregunta 8 de 10
1001 y b = 0111 con acarreo inicial 0. ¿Cuáles son la generación de grupo, la propagación de grupo y el acarreo final?Mostrar respuestaOcultar respuesta
Pregunta 9 de 10
1110 y 0011. ¿Qué mitades más significativas resultan para la multiplicación con y sin signo, y cabe alguno de los productos en su rango correspondiente de 4 bits?Mostrar respuestaOcultar respuesta
1111 1010, cuya mitad más significativa extiende el signo de la mitad menos significativa y cabe. Sin signo, 14 × 3 es 42, 0010 1010, cuya mitad más significativa es distinta de cero; ambas mitades menos significativas coinciden, pero sus distintas comprobaciones de rango impiden tratarlas como si pudieran reducirse por igual.Pregunta 10 de 10
Mostrar respuestaOcultar respuesta
Set 2: Sumas y restas de enteros y decisiones de la ALU10 Preguntas de Práctica
Guarda esta unidad para ver todas las respuestas y practicar cada set.
Pregunta 1 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 2 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 3 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 4 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 5 de 10
1101?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 6 de 10
0101 y b = 1010, ¿qué resultados de anchura completa producen slt con signo y sltu sin signo?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 7 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 8 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 9 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 10 de 10
1001 0110. ¿Cuáles son su resultado y su salida Zero?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Set 3: Productos con signo, división y atajos aritméticos10 Preguntas de Práctica
Guarda esta unidad para ver todas las respuestas y practicar cada set.
Pregunta 1 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 2 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 3 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 4 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 5 de 10
q = div(a, b), r = rem(a, b) y después q × b + r con vuelta al extremo del rango. Para a = −2³¹ y b = −1, ¿qué ocurre?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 6 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 7 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 8 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 9 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 10 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Set 4: Campos de coma flotante y valores excepcionales10 Preguntas de Práctica
Guarda esta unidad para ver todas las respuestas y practicar cada set.
Pregunta 1 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 2 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 3 de 10
101 seguida de ceros. ¿Cuál es su valor?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 4 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 5 de 10
0x00000008?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 6 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 7 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 8 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 9 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 10 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Set 5: Decisiones de redondeo y pérdida de precisión10 Preguntas de Práctica
Guarda esta unidad para ver todas las respuestas y practicar cada set.
Pregunta 1 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 2 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 3 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 4 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 5 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 6 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 7 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 8 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 9 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 10 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Set 6: Diagnostica la aritmética en el camino de datos10 Preguntas de Práctica
Guarda esta unidad para ver todas las respuestas y practicar cada set.
Pregunta 1 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 2 de 10
0111 1000 de a = 1000 1010. ¿Qué resultados de menor que con y sin signo y qué salida Zero se obtienen?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 3 de 10
1010 y 0101 con acarreo de entrada 1. El bit menos significativo de su segundo operando cambia de 1 a 0. ¿Qué ocurre con el acarreo final y la suma?Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 4 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 5 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 6 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 7 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 8 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 9 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
Pregunta 10 de 10
Mostrar respuestaOcultar respuesta
Guarda esta unidad para ver esta respuesta.
¿Te atascas con una pregunta tuya? Ayuda con Tareas
Términos Clave
A
Absorción
Acumulador
Alineación de significandos
Anticipación de acarreo
Aritmética de saturación
Aritmética modular
Á
Árbol de Wallace
B
bfloat16
Bit adherente (sticky bit)
Bit de guarda
Bit de redondeo
Bit oculto
Bnegate
C
Campo de fracción
01, seguida de ceros para llenar el campo.Cancelación
Cero con signo
Cociente
Comparación sin signo
1111 es mayor que 0001 sin signo, aunque sus valores con signo son −1 y 1.Comprobación de límites
D
Desbordamiento con signo
Desbordamiento sin signo
Desplazador de barril (barrel shifter)
Desplazamiento aritmético a la derecha
Dividendo
División con restauración
División sin restauración
División SRT
Divisor
E
Error de representación
Excepción de resultado inexacto
Excepción de subdesbordamiento
Excepción síncrona (trap)
Extensión con ceros
0000 0000 1111 1010 al extenderlo a 16 bits.Extensión de signo
1010 con signo a 1111 1010 conserva −6; insertar ceros produciría el valor positivo 10.É
Épsilon de máquina
F
Falta de asociatividad
G
Generación de acarreo
Generación de acarreo de grupo
I
Indicador de condición (bandera de condición)
Infinito
L
Latencia de multiplicación
M
Mitad más significativa del producto
Multiplexor
Multiplicación por desplazamiento y suma
Multiplicación y suma fusionadas (FMA)
Multiplicador
1001 selecciona una copia sin desplazar y otra desplazada tres posiciones a la izquierda.Multiplicando
N
Normalización
Número subnormal
0x00000002 representa el doble del menor subnormal positivo.P
Precisión
Préstamo
Producto parcial
Propagación de acarreo
Propagación de acarreo de grupo
Puesta a uno si es menor
slt de RISC-V compara operandos con signo, mientras que sltu aplica el orden sin signo a los mismos patrones.R
Recodificación de Booth
Recodificación de Booth en base 4
Redondeo al más cercano con desempate al par
Redondeo correcto
Redondeo dirigido
Registro de coma flotante (punto flotante)
Resta en complemento a dos
Resto (residuo)
rem de RISC-V da −2 para −17 dividido por 5 porque el resto distinto de cero sigue el signo del dividendo.S
Salida de detección de cero
Sección de un bit
Sesgo del exponente
Significando (mantisa)
Signo corregido por desbordamiento
Subdesbordamiento gradual (gradual underflow)
Sumador completo
Sumador de acarreo almacenado
Sumador de propagación de acarreo
Sumador de selección de acarreo
T
Tolerancia absoluta
Tolerancia relativa
U
Unidad aritmético-lógica (ALU)
Unidad en la última posición (ulp)
V
Valor no numérico (NaN)
Sobre esta unidad
Crea tus propios Materiales de Estudio
Convierte tus notas, diapositivas y documentos en Guías de Estudio, Preguntas de Práctica, Flashcards y 6 herramientas más.