Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Tecnología Industrial

Desbordamiento binario

Una advertencia con los números binarios con signo es la del desbordamiento, donde la respuesta a un problema de suma o resta excede la magnitud que se puede representar con el número asignado de bits. Recuerde que el lugar del bit de señal se fija desde el principio del problema.

Con el último problema de ejemplo, usamos cinco bits binarios para representar la magnitud del número, y el bit más a la izquierda (sexto) como el bit de signo o peso negativo. Con cinco bits para representar la magnitud, tenemos un rango de representación de 2 5 , o treinta y dos pasos enteros desde 0 hasta el máximo.

Esto significa que podemos representar un número tan alto como +31 10 (011111 2 ), o tan bajo como -32 10 (100000 2 ).

Restricciones del campo numérico de seis bits

Si configuramos un problema de suma con dos números binarios, el sexto bit se usa para el signo y el resultado excede +31 10 o es menor que -32 10 , nuestra respuesta será incorrecta. Intentemos agregar 17 10 y 19 10 para ver cómo funciona esta condición de desbordamiento para números positivos excesivos:

La respuesta (100100 2 ), interpretado con el sexto bit como -32 10 lugar, en realidad es igual a -28 10 , no +36 10 como deberíamos obtener con +17 10 y +19 10 ¡agregado junto! Evidentemente, esto no es correcto. ¿Qué salió mal?

La respuesta radica en las restricciones del campo numérico de seis bits dentro del cual estamos trabajando Desde la magnitud de la suma verdadera y propia (36 10 ) excede el límite permitido para nuestro campo de bits designado, tenemos un error de desbordamiento .

En pocas palabras, seis lugares no dan suficientes bits para representar la suma correcta, por lo que cualquier cifra que obtengamos usando la estrategia de descartar el bit de "acarreo" más a la izquierda será incorrecta.

Ocurrirá un error similar si sumamos dos números negativos para producir una suma que sea demasiado baja para nuestro campo binario de seis bits. Intentemos agregar -17 10 y -19 10 juntos para ver cómo funciona esto (o no, según sea el caso):

La respuesta (incorrecta) es positiva veintiocho. El hecho de que la suma real de diecisiete negativos y diecinueve negativos fuera demasiado baja para ser representada correctamente con un campo de magnitud de cinco bits y un bit de sexto signo es la causa principal de esta dificultad.

Uso del séptimo bit como bit de señal

Intentemos estos dos problemas nuevamente, excepto que esta vez usamos el séptimo bit como bit de signo y permitimos el uso de 6 bits para representar la magnitud:

Al utilizar campos de bits lo suficientemente grandes para manejar la magnitud de las sumas, llegamos a las respuestas correctas. En estos problemas de muestra, pudimos detectar errores de desbordamiento realizando los problemas de suma en forma decimal y comparando los resultados con las respuestas binarias.

Por ejemplo, al agregar +17 10 y +19 10 juntos, sabíamos que la respuesta era supuesta ser +36 10 , así que cuando la suma binaria resultó ser -28 10 , sabíamos que algo tenía que estar mal. Aunque esta es una forma válida de detectar el desbordamiento, no es muy eficiente.

Después de todo, la idea de la complementación es poder sumar números binarios de manera confiable y no tener que verificar el resultado sumando los mismos números en forma decimal. Esto es especialmente cierto para el propósito de construir circuitos electrónicos para sumar cantidades binarias:el circuito tiene que ser capaz de verificar el desbordamiento sin la supervisión de un ser humano que ya sepa cuál es la respuesta correcta.

Lo que necesitamos es un método simple de detección de errores que no requiera aritmética adicional. Quizás la solución más elegante es buscar el signo de la suma y compárelo con los signos de los números agregados.

Obviamente, dos números positivos sumados deberían dar un resultado positivo, y dos números negativos sumados deberían dar un resultado negativo. Observe que siempre que teníamos una condición de desbordamiento en los problemas de ejemplo, el signo de la suma era siempre opuesto de los dos números agregados:+17 10 más +19 10 dando -28 10 , o -17 10 más -19 10 dando +28 10 .

Al comprobar los signos por sí solos, podemos decir que algo anda mal. Pero, ¿qué pasa con los casos en los que se suma un número positivo a un número negativo? ¿Qué signo debe tener la suma para que sea correcta? O, más precisamente, ¿qué signo de suma indicaría necesariamente un error de desbordamiento?

La respuesta a esto es igualmente elegante: nunca ser un error de desbordamiento cuando se suman dos números de signos opuestos! La razón de esto es evidente cuando se considera la naturaleza del desbordamiento. El desbordamiento ocurre cuando la magnitud de un número excede el rango permitido por el tamaño del campo de bits.

La suma de dos números con el mismo signo puede muy bien exceder el rango del campo de bits de esos dos números, por lo que, en este caso, el desbordamiento es una posibilidad. Sin embargo, si se suma un número positivo a un número negativo, la suma siempre estará más cerca de cero que cualquiera de los dos números agregados:su magnitud debe ser menor que la magnitud de cualquiera de los números originales, por lo que el desbordamiento es imposible.

Afortunadamente, esta técnica de detección de desbordamiento se implementa fácilmente en circuitos electrónicos y es una característica estándar en los circuitos sumadores digitales:un tema para un capítulo posterior.

HOJAS DE TRABAJO RELACIONADAS:


Tecnología Industrial

  1. La electrónica como ciencia
  2. Configuración de un laboratorio doméstico
  3. Uso del voltímetro
  4. Contador binario de 3 bits
  5. Numeración decimal versus binaria
  6. Numeración octal y hexadecimal
  7. Suma binaria
  8. Resta binaria
  9. ¿Qué es una tubería de desbordamiento?
  10. Construcciones de contenedores para brazo en x86
  11. Primeros pasos con Go on PLCnext