Diferencia entre revisiones de «Diseño de circuitos digitales y tecnología de computadores/Representación interna de números enteros»

Contenido eliminado Contenido añadido
m →‎Suma y resta aritméticas: Corrección de erratas en ejemplos de resta de enteros
Eliminados códigos progresivos y BCD por considerarlos más allá del nivel del libro
Línea 1:
==Sistemas de representación==
==Códigos binarios==
 
Hay tres modos de representación de números con signo: en signo y magnitud, en complemento a uno y en complemento a dos. En cualquiera de estos sistemas de representación, el bit más a la izquierda indica el signo (vale 0 para el signo + y 1 para el signo -). Los números positivos se representan del mismo modo en los tres sistemas: el bit de signo vale 0 y el resto de los bits codifican el valor absoluto (magnitud) del número en binario natural. Los números negativos se representan de distinto modo:
Existen diversos códigos binarios para la representación de números enteros, con o sin signo.
 
* Binario natural. Codifica números naturales en binario puro. Con n bits, se pueden representar 2<sup>n</sup> números, en el rango 0...2<sup>n</sup>-1
 
* Códigos progresivos: Johnson, Gray
 
* BCD (Decimal Codificado en Binario):
** Ponderados: BCD natural, BCD Aitken
** No ponderados: BCD exceso 3
 
* Representación en binario de enteros con signo
** Signo y magnitud
** Negativos en complemento a uno
** Negativos en complemento a dos
 
==Códigos progresivos==
 
Dos combinaciones binarias son <em>adyacentes</em> cuando difieren en un solo bit. Un código binario es <em>continuo</em> o <em>progresivo</em> cuando las combinaciones binarias de números consecutivos son adyacentes. El código binario natural no es continuo.
 
Un código binario continuo es <em>cíclico</em> si la última combinación es adyacente a la primera. Los códigos Gray y Johnson son progresivos y cíclicos.
 
Un código <strong>Gray</strong> de n bits se crea a partir del código Gray de n-1 bits. La primera parte del rango se crea anteponiendo 0 al código Gray de n-1 bits. La segunda parte del rango se obtiene copiando el código Gray de n-1 bits en orden inverso y poniendo delante de cada número un 1.
 
Con n bits, el código Gray es capaz de realizar 2<sup>n</sup> combinaciones. La siguiente tabla muestra los códigos Gray desde 1 hasta 4 bits:
 
:{| cellspacing="5"
|-
|1 bit || 2 bits || 3 bits || 4 bits || decimal
|-
| 0 || 0 0 || 0 00 || 0 000 || 0
|-
| 1 || 0 1 || 0 01 || 0 001 || 1
|-
| || 1 1 || 0 11 || 0 011 || 2
|-
| || 1 0 || 0 10 || 0 010 || 3
|-
| || || 1 10 || 0 110 || 4
|-
| || || 1 11 || 0 111 || 5
|-
| || || 1 01 || 0 101 || 6
|-
| || || 1 00 || 0 100 || 7
|-
| || || || 1 100 || 8
|-
| || || || 1 101 || 9
|-
| || || || 1 111 || 10
|-
| || || || 1 110 || 11
|-
| || || || 1 010 || 12
|-
| || || || 1 011 || 13
|-
| || || || 1 001 || 14
|-
| || || || 1 000 || 15
|}
 
Con n bits, el código '''Johnson''' es capaz de realizar 2·n combinaciones. La siguiente tabla muestra el código Johnson de 5 bits:
 
:{|
|-
|decimal || align="center"| Johnson
|-
|align="center"| 0 || 00000
|-
|align="center"| 1 || 00001
|-
|align="center"| 2 || 00011
|-
|align="center"| 3 || 00111
|-
|align="center"| 4 || 01111
|-
|align="center"| 5 || 11111
|-
|align="center"| 6 || 11110
|-
|align="center"| 7 || 11100
|-
|align="center"| 8 || 11000
|-
|align="center"| 9 || 10000
|}
 
==Códigos BCD==
 
Los códigos BCD codifican cada una de las cifras decimales mediante 4 bits. Pueden ser:
* Ponderados:
** BCD natural: pesos 8 4 2 1
** BCD Aitken: pesos 2 4 2 1. Es un código autocomplementario: el complementario a la bases menos uno de un dígito decimal n (C<sub>9</sub>N = 9-N) se obtiene directamente en BCD Aitken con sólo invertir los bits.
* No ponderados: BCD exceso 3 (XS3), comienza codificando el cero decimal con el tres en binario
 
:{|
|-
| decimal -
| BCD natural -
| BCD Aitken -
| XS3
|-
| || 8 4 2 1 || 2 4 2 1 ||
|-
| 0 || 0 0 0 0 || 0 0 0 0 || 0 0 1 1
|-
| 1 || 0 0 0 1 || 0 0 0 1 || 0 1 0 0
|-
| 2 || 0 0 1 0 || 0 0 1 0 || 0 1 0 1
|-
| 3 || 0 0 1 1 || 0 0 1 1 || 0 1 1 0
|-
| 4 || 0 1 0 0 || 0 1 0 0 || 0 1 1 1
|-
| 5 || 0 1 0 1 || 1 0 1 1 || 1 0 0 0
|-
| 6 || 0 1 1 0 || 1 1 0 0 || 1 0 0 1
|-
| 7 || 0 1 1 1 || 1 1 0 1 || 1 0 1 0
|-
| 8 || 1 0 0 0 || 1 1 1 0 || 1 0 1 1
|-
| 9 || 1 0 0 1 || 1 1 1 1 || 1 1 0 0
|}
 
{{Ejemplo
|titulo=BCD con parte fraccionaria
|enunciado=Representar en BCD el número decimal 238,7 suponiendo la palabra de 16 bits, siendo 4 bits reservados para la parte fraccionaria.
|sol=
* BCD natural: 0010 0011 1000,0111
* BCD Aitken: 0010 0011 1110,1101
* Exceso 3: 0101 0110 1011,1010
 
Los ceros a la izquierda son representativos porque BCD no es un sistema de numeración sino una representación interna.
}}
 
De existir, el signo + se representa 0000, y el signo -, 0001. Por ejemplo, el número decimal +215 se representa 0000&nbsp;0010&nbsp;0001&nbsp;0101.
 
Según el número bits empleado para cada dígito decimal, hay dos tipos de representación BCD:
* BCD empaquetado: usa un byte para contener dos dígitos decimales. Ejemplo: 10 = 0001 0000
* BCD desempaquetado: se usa un byte para contener cada dígito decimal. Ejemplo: 10 = 0000 0001 0000 0000
<br />
 
==Representación en binario de enteros con signo==
 
En cualquiera de los siguientes tipos de representación, el bit más a la izquierda indica el signo el signo (vale 0 para el signo + y 1 para el signo -). Los números positivos se representan del mismo modo: el bit de signo vale 0 y el resto de los bits codifican el valor absoluto (magnitud) del número en binario natural. Los números negativos se representan de distinto modo:
<ul>
<li> Signo y magnitud. La magnitud (valor absoluto) de los números negativos se codifica en binario natural, distinguiéndose de los números positivos por el bit de signo (BS). Existen dos representaciones del cero: +0 (BS=0) y -0 (BS=1).</li>
Línea 157 ⟶ 10:
<li> Complemento a dos. Los números negativos se codifican hallando el complemento a dos de los números positivos:
{{Eqn|1= -N = Ca2(+N) = Ca1(+N) + 1}}
El cero tiene una única representación (todos los bits igual a cero), lo que permite representar un número negativo adicional: <i>-2<sup>n-1</sup></i>, donde <i>n</i> es el número de bits de la palabra. Este número negativo adicional se representa con el bit de signo 1 (negativo) y los restantes bits igual a cero.
</li>
</ul>
Línea 163 ⟶ 16:
La tabla siguiente muestra los tres tipos de representación interna de enteros con signo usando una palabra de n=3 bits.
<center>
{| class="wikitable" style="text-align:center;" cellpadding="4"
{|border="1"
|-
|Decimal || signo y magnitud || complemento a 1 || complemento a 2
|-
| +3 || 011 || 011 || 011
|align="center"|+3<br />+2<br />+1 <br />+0<br />-0<br />-1<br />-2<br />-3<br />-4
|-
|align="center"|011<br />010<br />001<br />000<br />100<br />101<br />110<br />111<br />-
| +2 || 010 || 010 || 010
|align="center"|011<br />010<br />001<br />000<br />111<br />110<br />101<br />100<br />-
|-
|align="center"|011<br />010<br />001<br />000<br />-<br />111<br />110<br />101<br />100
| +1 || 001 || 001 || 001
|-
| +0 || 000 || 000 || 000
|-
| -0 || 100 || 111 || -
|-
| -1 || 101 || 110 || 111
|-
| -2 || 110 || 101 || 110
|-
| -3 || 111 || 100 || 101
|-
| -4 || - || - || 100
|-
|rango
Línea 177 ⟶ 43:
|}
</center>
 
<br />
==Obtener la representación interna de un número decimal==
 
{{Ejemplo
Línea 212 ⟶ 79:
}}<!--Fin ejemplo-->
<br />
 
==Obtener el número decimal a partir de su representación interna==
 
El número decimal a partir de su representación interna se obtiene según las siguientes reglas:
Línea 247 ⟶ 116:
 
 
===Suma y resta aritméticas===
 
Para las operaciones de suma y resta en la representación de números enteros en signo y magnitud, se sigue el procedimiento[[Diseño matemáticode delcircuitos sistemadigitales dey numeracióntecnología binariode -véasecomputadores/Sistemas apartadode <em>numeración#Suma y resta de números enteros (con signo)<em>|procedimiento enmatemático [[Diseñodel de circuitos digitales y tecnologíasistema de computadores/Sistemasnumeración de numeraciónbinario]]-. Este procedimiento matemático requiere decisiones lógicas para determinar el signo del resultado, para determinar si los operandos deben sumarse o restarse y para determinar el orden de los operandos en el caso de tener que realizar una resta. En cambio, en las representaciones en complemento a uno o complemento a dos, el resultado incluyendo el signo se obtiene directamente al sumar los operandos, sin necesidad de operaciones lógicas adicionales.
 
En la representación de negativos en complemento a uno, la suma de dos números, cualesquiera que sean sus signos, se obtiene sumando los operandos y el acarreo resultante.
Línea 299 ⟶ 168:
<br />
 
También hayHay que tener en cuenta la posibilidad de '''desbordamiento''', es decir, que el resultado esté fuera del rango de valores de la representación interna utilizada. En la representación en signo y magnitud, el desbordamiento es detectado por el acarreo de salida del bit más significativo de la magnitud (no el bit de signo). En las representaciones de negativos en complemento a uno o complemento a dos, el desbordamiento se detecta cuando al sumar dos operandos del mismo signo, el signo del resultado es el contrario del de los operandos.