Función Mantisa y Punto Flotante
Función Mantisa y Punto Flotante
mant(x) = x - [x]
Es decir, al número se le resta su parte entera, así la mantisa de los siguientes números serán:
mant(30,008) = 0,008
mant(25,56578) = 0,56578
mant(-1,66) = 0,34 porque (-1,66) - (-2) = 0.34
Es una función periódica de periodo 1, ya que f(x) = f(x + 1) = f(x + 2) = f(x + 3)... = f(x + n)
El método común y corriente utilizado por las computadoras para representar números reales es la
de notación de punto flotante existen muchas variedades de notación de punto flotante y cada una
de ellas tiene sus características individuales el concepto clave es de que un número real es
representado por un numero denominado mantisa multiplicado por una base elevado a una potencia
entera denominada exponente la base generalmente es fija la mantisa y el exponente varían de
acuerdo a la representación de diferentes números reales. En la notación de punto flotante un
numero real está formado por una hilera de 32 bits formada por una mantisa de 24 bits seguida de
un exponente de 8 bits la base se fija como 10, tanto la mantisa como el exponente son enteros
binarios de complemento dobles
Mantisa
De Wikipedia, la enciclopedia libre
La mantisa (también llamada significando) es la parte de una representación en punto flotante que
contiene los dígitos significativos del número a representar, el orden de magnitud de los cuales está
determinado por el exponente.
Normalización: La mantisa es un número real cuya parte entera sólo consta de un dígito — que
será la primera cifra significativa del valor a representar. Por ejemplo, el número en sistema
decimal 123,457 puede ser representado en punto flotante normalizado como 1,23457 con
exponente +2.
Número entero: La mantisa es un número entero. En este formato, el número 123,457 podría ser
representado como 123457 con exponente -3.
Cuando se usan mantisas normalizadas en el sistema binario, la primera cifra (bit) significativa ha
de ser necesariamente 1. Este primer bit no se suele expresar en el campo de la mantisa y está
implícito — de ahí que se llame el bit oculto. De esta forma se ahorra un bit en la representación
que puede ser usado para indicar un bit significativo adicional.
Dependiendo del contexto, el bit oculto puede ser o no ser tenido en cuenta cuando se describe la
longitud de la mantisa en un formato de coma flotante. Por ejemplo, el formato de doble precisión
de IEEE 754 es descrito tanto como que tiene 53 bits de precisión (contando el bit oculto) como que
tiene 52 bits (sin contar el bit oculto).
Coma flotante
De Wikipedia, la enciclopedia libre
Coma flotante o punto flotante es un método de representación de números reales que se puede
adaptar al orden de magnitud del valor a representar, usualmente trasladando la coma decimal —
mediante un exponente— hacia la posición de la primera cifra significativa del valor.
De esta forma, con un número dado de dígitos representativos se obtiene mayor precisión que con la
coma fija, debido a que el valor de estos dígitos es siempre significativo sea el que sea el orden de
magnitud del número a representar. Debido a esta adaptación, permite representar un rango mucho
mayor de números (determinado por los valores límite que puede tomar el exponente).
Su uso es especialmente interesante en la informática pues permite trabajar con números decimales
en rangos amplios, aunque también se usa el truncado de decimales.
Representación [editar]
Una representación en coma flotante se compone de tres números (campos) que siguen el siguiente
patrón:
r = m.be
m: mantisa o significando, dígitos significativos del número. El tamaño máximo de este campo,
usualmente fijo y limitado, determina la precisión de la representación. Este campo está
usualmente normalizado, es decir, su parte entera sólo consta de un dígito (que será la primera
cifra significativa del número a representar).
b: base del sistema de representación (10 en sistema decimal, 8 en sistema octal, 2 en sistema
binario, etc)
e: exponente, orden de magnitud del significando. El mínimo y máximo valor posible del exponente
determinan el rango de valores representables. Cabe añadir que cuando e vale cero el valor real
coincide con el significando.
En ciertos casos se usa como , con un cuarta mantisa, s, que tiene el valor de 1 ó -1
según el signo del número (que se extrae del significando).
Con el fin de optimizar la notación de cifras de numerosos dígitos, se acude al uso de unidades
múltiplos en el caso de ser un valor métrico o a la coma flotante en los demás. Su uso es común en
la física por los valores amplios e imprecisos que se acostumbran a obtener. Por esta razón también
se incluye cierta permisividad con la inexactitud del valor. El error que puede surgir del empleo de
este método se suele combinar al error calculado de los resultados.
El método utilizado es mover la coma a la parte más significativa de la cifra, es decir, variando el
peso aritmético de los dígitos que lo componen. Para entender el significado de los números en
coma flotante, acudimos a ejemplos más evidentes del sistema decimal:
Supongamos que tenemos los siguientes números reales: 3135,07; 0,04576 y 69233704,063.
Tomando de éstos sus 6 dígitos significativos, su conversión a notación de coma flotante
normalizada, en donde la coma decimal se sitúa a la derecha del primer dígito, se escribirán
3,13507×103; 4,57600×10-2 y 6,92337×107.
Como se observa en estos ejemplos, la coma decimal se ha desplazado hacia la derecha o hacia la
izquierda para obtener la misma estructura en la notación. La pérdida de información en el tercer
caso es potencialmente negligible, su error es del 0,001%.
En notación de coma fija, con 4 dígitos para los enteros y 2 dígitos, para los decimales se obtendría
3135,07; 0,04 y 3704,06 pudiendo perder información importante en entornos no controlados de
uso.
Técnicamente no se puede colocar una coma en una cifra puesto que sólo se pueden manejar
valores de 0 y 1. Para resolver el problema se fuerza que la mantisa esté normalizada, con lo cual se
conoce la posición de la coma.
El bit de mayor peso define si hay signo negativo o no lo hay. Le siguen una serie de bits que
definen el exponente en defecto a la mitad del rango de dichos bits. El resto de bits son la mantisa.
Emplearemos varios ejemplos en una notación de 16 bit para describir el método usado:
En este caso, el exponente ocupa 6 bits capaces de representar de 0 a 63, por lo tanto, al
exponente se le suma 31 en esta notación. La mantisa, al ser normalizada, tendrá siempre un 1 en
su parte entera. Este bit redundante se denomina bit oculto o implícito y no se incluye en esta
notación.
La notación en coma flotante es más lenta de procesar y menos precisa que la notación en coma fija,
pero dado un tamaño fijo de dígitos, permite un mayor rango en los números que se pueden
representar con ellos.
Debido a que las operaciones aritméticas que se realizan con números en coma flotante son muy
complejas de realizar, muchos sistemas destinan un procesador especial para la realización
específica de este tipo de operaciones, denominado Unidad de Coma Flotante.
En ordenadores y calculadoras los números en coma flotante se suelen representar de forma distinta.
Donde se debería escribir se suele escribir (por ejemplo , también
escrito y ; otro ejemplo: ) o incluso, sobre
todo en calculadoras científicas: , aunque técnicamente es incorrecto (por ejemplo
).
El estándar de la IEEE para aritmética en coma flotante (IEEE 754) es el estándar más
extendido para las computaciones en punto flotante, y es seguido por muchas de las mejoras de
CPU y FPU. El estándar define formatos para la representación de números en punto flotante
(incluyendo el cero) y valores desnormalizados, así como valores especiales como infinito y NaN,
con un conjunto de operaciones en punto flotante que trabaja sobre estos valores. También
especifica cuatro modos de redondeo y cinco excepciones (incluyendo cuando dichas excepciones
ocurren, y que sucede en dichos momentos).
IEEE 754 especifica cuatro formatos para la representación de valores en punto flotante: precisión
simple (32 bits), precisión doble (64 bits), precisión simple extendida (≥ 43 bits, no usada
normalmente) y precisión doble extendida (≥ 79 bits, usualmente implementada con 80 bits). Sólo
los valores de 32 bits son requeridos por el estándar, los otros son opcionales. Muchos lenguajes
especifican qué formatos y aritmética de la IEEE implementan, a pesar de que a veces son
opcionales. Por ejemplo, el lenguaje de programación C, ahora permite pero no requiere la
aritmética de la IEEE (el tipo de C float es típicamente usado para la precisión simple de la IEEE
y el tipo double usa la precisión doble del la IEEE).
El título completo del estándar es IEEE Standard for Binary Floating-Point Arithmetic
(ANSI/IEEE Std 754-1985), y también es conocido por IEC 60559:1989, Binary floating-point
arithmetic for microprocessor systems (originalmente el número de referencia era IEC 559:1989).
[1]
Contenido
[ocultar]
Los Bits dentro de una palabra de tamaño W están indexados por enteros en el rango 0 a W−1
inclusive. El bit cuyo índice es 0 se sitúa a la derecha. El menor bit indexado es normalmente el
menos significativo.
donde S es el bit de signo y Exp es el campo exponente. (Para el signo: 0=Positivo ; 1= Negativo).
El exponente es desplazado en el un número en precisión simple, un exponente en el rango −126 a
+127 es desplazado mediante la suma de 127 para obtener un valor en el rango 1 a 254 (0 y 255
tienen valores especiales descritos más adelante). Cuando se interpreta el valor en punto flotante, el
número es desplazado de nuevo para obtener el exponente real.
ceros
números normalizados
números desnormalizados
infinitos
NaN (¬E, no es un número, como por ejemplo, la raíz cuadrada de un número negativo)
Las clases se distinguen principalmente por el valor del campo Exp, siendo modificada ésta por el
campo fracción. Considera Exp y Fracción como campos de números binarios sin signo (Exp se
encuentra en el rango 0–255):
Ceros 0 0
Números
0 distinto de 0
desnormalizados
Infinitos 255 0
Para números normalizados, los más comunes, Exp es el exponente desplazado y Fracción es la
parte fraccional de la mantisa (o significando). El número tiene valor v:
v = s × 2e × m
Donde
m = 1.Fracción en binario (esto es, el significando es el número binario 1 seguido por el punto
decimal seguido por los bits de Fracción). Por lo tanto, 1 ≤ m < 2.
Notas:
1. Los números desnormalizados son iguales excepto que e = −126 y m = 0.Fracción. (e NO es -127 : el
significando ha de ser desplazado a la derecha por un bit más, de forma que incluya el bit principal,
que no siempre es 1 en este caso. Esto se balancea incrementando el exponente a -126 para el
cálculo.)
2. −126 es el menor exponente para un número desnormalizado
3. Hay dos ceros. +0 (S es 0) y −0 (S es 1)
4. Hay dos infinitos +∞ (S es 0) y −∞ (S es 1)
5. Los NaN s pueden tener un signo y un significando, pero estos no tienen otro significado que el que
puedan aportar en pruebas de diagnóstico; el primer bit del significando es a menudo utilizado para
distinguir NaN s señalizados de NaN s silenciosos
6. los NaNs y los infinitos tienen todos los bits a 1 en el campo Exp.
Un Ejemplo [editar]
Dado que es un número negativo, el signo es "1". Busquemos los demás valores:
Primero, escribimos el número (sin signo) usando notación binaria. Mira el sistema de numeración
binario para ver cómo hacer esto. El resultado es 1110110.101.
La mantisa es la parte a la derecha del punto decimal, rellenada con ceros a la derecha hasta que
obtengamos todos los 23 bits. Es decir 11011010100000000000000.
El exponente es 6, pero necesitamos convertirlo a binario y desplazarlo (de forma que el exponente
más negativo es 0, y todos los exponentes son solamente números binarios no negativos). Para el
formato IEEE 754 de 32 bits, el desplazamiento es 127, así es que 6 + 127 = 133. En binario, esto se
escribe como 10000101.
La precisión doble es esencialmente lo mismo exceptuando que los campos son de mayor tamaño
(más bits por campo):
1 11 52 <-- tamaño
en bits
+-+-----------+----------------------------------------------+
|S| Exp | Mantisa |
+-+-----------+----------------------------------------------+
63 62 52 51 0 <-- índice del
bit (0 a la derecha)
desplazado +1023
Los NaN s y los infinitos son representados con todos los bits de los Exp siendo 1 (2047 en
decimal).
Para los números normalizados, el exponente es desplazado +1023 (así nuestro ejemplo anterior es
Exp - 1023) Para números denormalizados el exponente es -1022 (el mínimo exponente para un
número normalizado— no es 1024 porque los números normalizados tienen un bit a 1 delante del
punto binario y los números desnormalizados no). Como antes, ambos infinitos y los ceros
contienen signo.
Por ejemplo, para dos números positivos a y b, a < b es cierto siempre que los enteros binarios sin
signo con los mismos patrones de bits y el mismo orden de bytes que a y b son también ordenados
de forma a < b. En otras palabras, dos números positivos (que se sabe que no son NaN s) puede ser
comparados con una comparación entre enteros binarios sin signo entre los mismos grupos de bits,
teniendo como base que los números tienen el mismo orden de bytes (esta ordenación, por tanto, no
puede ser utilizada a través de una unión en el lenguaje de programación C. Este es un ejemplo de
ordenación lexicográfica.
Unbiased que redondea al número más cercano, si el número cae en medio, este es redondeado al
valor más cercano con un valor par (cero) en su bit menos significativo. Este modo es el requerido
como por defecto.
Hacia el cero
Hacia el infinito positivo
Hacia el infinito negativo
En un ordenador típico los números en punto flotante se representan de la manera descrita en el apartado
anterior, pero con ciertas restricciones sobre el número de dígitos de q y m impuestas por la longitud de
palabra disponible (es decir, el número de bits que se van a emplear para almacenar un número). Para
ilustrar este punto, consideraremos un ordenador hipotético que denominaremos MARC-32 y que dispone
de una longitud de palabra de 32 bits (muy similar a la de muchos ordenadores actuales). Para representar
un número en punto flotante en el MARC-32, los bits se acomodan del siguiente modo:
En la mayoría de los cálculos en punto flotante las mantisas se normalizan, es decir, se toman de forma que
el bit más significativo (el primer bit) sea siempre '1'. Por lo tanto, la mantisa q cumple siempre la ecuación
(19).
Dado que la mantisa siempre se representa normalizada, el primer bit en q es siempre 1, por lo que
no es necesario almacenarlo proporcionando un bit significativo adicional. Esta forma de almacenar
un número en punto flotante se conoce con el nombre de técnica del 'bit fantasma'.
Se dice que un número real expresado como aparece en la ecuación (18) y que satisface la ecuación
(19) tiene la forma de punto flotante normalizado. Si además puede representarse exactamente con
|m| ocupando 7 bits y |q| ocupando 24 bits, entonces es un número de máquina en el MARC-323
Ya que , la MARC-32 puede manejar números tan pequeños como 10-38 y tan grandes
38
como 10 . Este no es un intervalo de valores suficientemente generoso, por lo que en muchos casos
debemos recurrir a programas escritos en aritmética de doble precisión e incluso de precisión
extendida.
Como q debe representarse empleando no más de 24 bits significa que nuestros números de
máquina tienen una precisión limitada cercana a las siete cifras decimales, ya que el bit menos
significativo de la mantisa representa unidades de . Por tanto, los números
expresados mediante más de siete dígitos decimales serán objeto de aproximación cuando se
almacenen en el ordenador.
Por ejemplo: 0.5 representado en punto flotante en el MARC-32 (longitud de palabra de 32 bits) se
almacena en la memoria del siguiente modo:
Ejemplo 5: Suponga un ordenador cuya notación de punto fijo consiste en palabras de longitud 32
bits repartidas del siguiente modo: 1 bit para el signo, 15 bits para la parte entera y 16 bits para la
parte fraccionaria. Represente los números 26.32, y 12542.29301 en base 2
empleando esta notación de punto fijo y notación de punto flotante MARC-32 con 32 bits. Calcule el
error de almacenamiento cometido en cada caso.
Antes de entrar con detalle en la aritmética de los números en punto flotante, es interesante notar
una propiedad de estos números de especial importancia en los cálculos numéricos y que hace
referencia a su densidad en la línea real. Supongamos que p, el número de bits de la mantisa, sea 24.
separados por una distancia 1/224. De modo análogo, en cualquier intervalo hay 224
f 24 20
números equiespaciados, pero su densidad en este caso es 2 /2 . Por ejemplo, entre 2 = 1048576
y 221 = 2097152 hay 224 = 16777216 números, pero el espaciado entre dos números sucesivos es de
sólo . De este hecho se deriva inmediatamente una regla práctica: cuando es necesario comparar
dos números en punto flotante relativamente grandes, es siempre preferible comparar la diferencia
relativa a la magnitud de los números. En la figura (1) se representa gráficamente la separación
entre dos números consecutivos en función del exponente f en el rango f = [20,30].
Figure: Evolución de la separación entre dos números
consecutivos en función del exponente, f, de la
representación en punto flotante de un número real.
Las conversiones entre números de bases diferentes se efectúan por medio de operaciones
aritméticas simples. Dentro de las conversiones más utilizadas se encuentran:
Para la conversión de decimal a binario se emplean dos métodos. El primero es divisiones sucesivas
y el segundo es suma de potencias de 2.
Se va dividiendo la cantidad decimal por 2, apuntando los residuos, hasta obtener un cociente cero.
El último residuo obtenido es el bit más significativo (MSB) y el primero es el bit menos
significativo (LSB).
Ejemplo
Este método consiste en determinar el conjunto de pesos binarios cuya suma equivalga al número
decimal.
Ejemplo
15310 = 27 + 24 + 23 + 20 = 128 + 16 +8 +1
15310= 100110012
Como se aprecia, si se cuenta con alguna familiaridad con las potencias de 2 este último método es
más rápido.
Emplea la misma metodología de la suma de potencias de 2 pero se trabaja con potencias negativas.
Ejemplo
1,75 1 MSB
0,875
1,5 1
0,75
1,00 1 LSB
0,5
Ejemplo
En la conversión de una magnitud decimal a octal se realizan divisiones sucesivas por 8 hasta
obtener la parte entera del cociente igual a cero. Los residuos forman el número octal equivalente,
siendo el último residuo el dígito más significativo y el primero el menos significativo.
Ejemplo
Un número binario se convierte a decimal formando la suma de las potencias de base 2 de los
coeficientes cuyo valor sea 1 (ver lección 1).
Ejemplo
El método consiste en conformar grupos de 4 bits hacia la izquierda y hacia la derecha del punto
que indica las fracciones, hasta cubrir la totalidad del número binario. Enseguida se convierte cada
grupo de número binario de 4 bits a su equivalente hexadecimal.
Ejemplo
El método consiste en hacer grupos de 3 bits hacia la izquierda y hacia la derecha del punto que
indica las fracciones, hasta cubrir la totalidad del número binario. Enseguida se convierte cada
grupo de número binario de 3 bits a su equivalente octal.
Ejemplo
En el sistema hexadecimal, cada dígito tiene asociado un peso equivalente a una potencia de 16,
entonces se multiplica el valor decimal del dígito correspondiente por el respectivo peso y realizar
la suma de los productos.
Ejemplo
Ejemplo
1F0C16 = 11111000011002
La conversión de un número octal a decimal se obtiene multiplicando cada dígito por su peso y
sumando los productos:
Ejemplo
La conversión de octal a binario se facilita porque cada dígito octal se convierte directamente en 3
dígitos binarios equivalentes.
Ejemplo
7158 = (111001101)2
Sistemas de numeración
1. Introducción
La importancia del sistema decimal radica en que se utiliza universalmente para representar
cantidades fuera de un sistema digital. Es decir que habrá situaciones en las cuales los valores
decimales tengan que convenirse en valores binarios antes de que se introduzcan en sistema
digital. Entonces habrá situaciones en que los valores binarios de las salidas de un circuito digital
tengan que convertir a valores decimales para presentarse al mundo exterior.
Por otro lado del binario y el decimal, otros dos sistemas de numeración encuentran amplias
aplicaciones en los sistemas digitales. Los sistemas octal (base 8) y hexadecimal (base 16) se usan
con el mismo fin, que es ofrecer un eficaz medio de representación de números binarios grandes.
Como veremos, ambos sistemas numéricos tienen la ventaja de que pueden convenirse fácilmente
al y del binario.
Tabla Comparativa
0000 0 0 1000 8 8
0001 1 1 1001 9 9
0010 2 2 1010 10 A
0011 3 3 1011 11 B
0100 4 4 1100 12 C
0101 5 5 1101 13 D
0110 6 6 1110 14 E
0111 7 7 1111 15 F
174 2
0 87 2
1 43 2
1 21 2
1 10 2
0 5 2
1 2 2
0 1
45 = 32 + 8 + 4 + l = 25 + 0 + 23 +2 2 + 0 + 20
entonces es igual a 1 0 1 1 0 12
Pasar a decimal el binario 101011102
10101110
0 * 20 = 0
1 * 21 = 2
1 * 22 = 4
1 * 23 = 8
0 * 24 = 0
1 * 25 = 32
0 * 26 = 0
1 * 27 = 128
174
101011102 = 17410
El segundo método consiste dividir repetidas veces el número entre dos hasta que su cociente sea
menor que él. Por ejemplo:
con residuo 0
con residuo 1
con residuo 0
con residuo 0
con residuo 0
con residuo 0
con residuo 0
con residuo 1
Entonces el número se forma tomando los residuos pero en forma inversa, es decir el primer digito
será el último residuo y así sucesivamente. El número quedaría como sigue:
1 0 0 0 0 0 1 02
3. Operaciones Binarias
En lo que sigue se adopta como convención la lógica positiva, lo que implica:
verdadero = 1 = activo, ------, falso = 0 = inactivo
Hay cinco operaciones binarias básicas: AND, OR, NOT, XOR y ADD. La resta, multiplicación y
división se derivan de estas cinco anteriores. Cualquiera sea la longitud de la palabra o palabras
objeto de la operación, siempre se hace de a un bit por vez de derecha a izquierda (tal como si fuera
una suma o resta con números decimales). Esto permite una definición de cada operación que es
independiente de la longitud del o de los operando(s). La operación NOT es la única que se realiza
sobre un sólo operando (es unaria), y las otras cuatro sobre dos operandos.
o La operación AND (Y) tiene resultado 1 si sus dos operandos son ambos 1
o La operación OR (O) tiene resultado 1 si cualquiera de sus operandos es 1
o La operación XOR tiene resultado 1 si los operandos son distintos (uno en 0 y el otro en 1)
o La operación NOT (NO) tiene resultado 1 si el operando es 0 y viceversa
o La operación ADD (SUMA) se define igual que con los números decimales
0 * 0 = 0 0 + 0 = 0 0 X 0 = 0 NOT 1 = 0 0 + 0 = 0
0 * 1 = 0 0 + 1 = 1 0 X 1 = 1 NOT 0 = 1 0 + 1 = 1
1 * 0 = 0 1 + 0 = 1 1 X 0 = 1 --- 1+0=1
1 * 1 = 1 1 + 1 = 1 1 X 1 = 0 --- 1 + 1 = 10
División
Reglas de la división binaria: 0/0 no permitida, 1/0 no permitida,0/1=0, 1/1=1
Ejemplos De Suma
1 1 1 1 1 Acarreo
1 1 0 0 1 25
+ 1 0 1 0 1 1 + 43
1 0 0 0 1 0 0 68
1 1 Acarreo
1 1 0. 1 0 6,50
+ 1 1 0 1. 0 1 +
13.25
1 0 0 1 1. 1 1 19.75
1 1 0 0 1 25
* 1 0 0 1 1 * 19
1 1 0 0 1
1 1 0 0 1
1 1 0 0 1 0 0
1 1 1 0 1 1 0 1 1 475
Es lo que hacemos en la suma decimal 5+5=10 (nos llevamos "1" para la operación del dígito
siguiente). Este llevarse "1" es vastamente usado entre los procesadores digitales y tiene un nombre
especial: carry (lo verá abreviado como CY, C o CF-por carry flag), lo que en castellano se traduce
como "acarreo" (que suena muy mal, asi que le seguiremos llamando carry). Estas operaciones
también se llaman "booleanas" ya que se basan en el álgebra de Boole (invito al lector a rememorar
cuando en la escuela secundaria se preguntaba, igual que yo, si el álgebra de Boole le serviría
alguna vez para algo).
En un ordenador el sistema de numeración es binario -en base 2, utilizando el 0 y el 1- hecho
propiciado por ser precisamente dos los estados estables en los dispositivos digitales que
componen una computadora.
Para sumar números, tanto en base 2 como hexadecimal, se sigue el mismo proceso que en base 10:
Podemos observar que la suma se desa-
1010 1010b rrolla de la forma tradicional; es decir:
+ 0011 1100b sumamos normalmente, salvo en el caso de
-------------- 1 + 1 = 102 , en cuyo caso tenemos un aca-
1110 0110b rreo de 1 (lo que nos llevamos).
Complemento a dos.
En general, se define como valor negativo de un número el que necesitamos sumarlo para obtener
00h, por ejemplo:
FFh Como en un byte solo tenemos dos nibbles, es
+ 01h decir, dos dígitos hexadecimales, el resultado es
------ 0 (observar cómo el 1 más significativo subrayado
100h es ignorado). Luego FFh=-1. Normalmente, el bit 7
se considera como de signo y, si está activo (a 1)
el número es negativo.
Por esta razón, el número 80h, cuyo complemento a dos es él mismo, se considera negativo (-128) y
el número 00h, positivo. En general, para hallar el complemento a dos de un número cualquiera
basta con calcular primero su complemento a uno, que consiste en cambiar los unos por ceros y los
ceros por unos en su notación binaria; a continuación se le suma una unidad para calcular el
complemento a dos. Con una calculadora, la operación es más sencilla: el complemento a dos de un
número A de n bits es 2n-A.
Otro factor a considerar es cuando se pasa de operar con un número de cierto tamaño (ej., 8 bits) a
otro mayor (pongamos de 16 bits). Si el número es positivo, la parte que se añade por la izquierda
son bits a 0. Sin embargo, si era negativo (bit más significativo activo) la parte que se añade por la
izquierda son bits a 1. Este fenómeno, en cuya demostración matemática no entraremos, se puede
resumir en que el bit más significativo se copia en todos los añadidos: es lo que se denomina la
extensión del signo: los dos siguientes números son realmente el mismo número (el -3 10): 11012 (4
bits) y 111111012 (8 bits).
Sistema de numeración octal
El sistema de numeración octal es muy importante en el trabajo que se realiza en una computadora
digital. Este tiene una base de ocho, lo cual significa que tiene ocho posibles dígitos: 0, 1, 2, 3, 4, 5,
6 y 7. Así, cada dígito de un número octal puede tener cualquier valor del 0 al 7.
Conversi6n de octal a decimal.- Por tanto, un número octal puede convenirse fácilmente a su
equivalente decimal multiplicando cada dígito octal por su valor posicional. Por ejemplo:
2748 = 2 x 82 + 7 x 81 + 4 x 80
2848 = 2 x 64 + 7 x 8 + 4 x 1
2848 = 18810
Conversión de decimal a octal.- Un entero decimal se puede convertir a octal con el mismo método
dc división repetida que se usó en la conversión de decimal a binario, pero con un factor de división
dc 8 en lugar de 2. Por ejemplo:
con residuo 4
con residuo 4
con residuo 2
Al final resulta que:
16410 = 2448
Conversión de octal a binario.- La ventaja principal del sistema de numeración octal es la facilidad
con que se puede realizar la conversión entre números binarios y octales. La conversión de octal a
binario se lleva a cabo conviniendo cada dígito octal en su equivalente binario dc 3 bits.
Por medio de estas conversiones, cualquier número octal se conviene a binario, convirtiéndolo dc
manera individual. Por ejemplo, podemos convertir 516, a binario de la siguiente manera:
516
101. 001 110
entonces:
5168 = 1010011102
Conversi6n de binario a octal.- La conversión de enteros binarios a octales es simplemente la
operación inversa del proceso anterior. Los bits del número binario se agrupan en conjuntos de tres
comenzando por el LSB. Luego, cada grupo se convierte a su equivalente octal. Por ejemplo:
111 001 101 110
7156
entonces:
1110011011102 = 71568
Sistema De Numeración Hexadecimal
Conversión de hexadecimal a decimal.- Un número hexadecimal se puede convenir a su
equivalente decimal utilizando el hecho de que cada posición de los dígitos hexadecimales tiene un
valor que es una potencia de 16. El LSD tiene un valor de l60 = 1; el siguiente dígito en secuencia
tiene un valor de 161 = 16; el siguiente tiene un valor de 162 = 256 y así sucesivamente. Por ejemplo:
81216 = 8 x 162 + 1 x 161 + 2 x 160
81216 = 2048 + 16 + 2
81216 = 206610
Conversión de decimal a hexadecimal.- Recuerde que efectuamos la conversión de decimal a
binario por medio de la división repetida entre 2 y de decimal a octal por medio de la división
repetida entre 8. De igual manera, la conversión de decimal a hexadecimal se puede efectuar por
medio de la división repetida entre 16. Por ejemplo:
con residuo 7
con residuo 1
entonces:
42310 = 1A716
Conversión de hexadecimal a binario.- Al igual que el sistema de numeración octal, el sistema
hexadecimal se usa principalmente como método ‘taquigráfico" en la representación de números
binarios. Es una tarea relativamente simple la de convertir un número hexadecimal en binario.
Cada dígito hexadecimal se convierte en su equivalente binario de 4 bits. Por ejemplo:
6D23
110. 1101 0010 0011
entonces:
6D2316 = 1101101001000112
Conversión de binario a hexadecimal.- Esta conversión es exactamente la operación inversa del
proceso anterior. El número binario se agrupa en conjuntos de cuatro bits y cada grupo se
convierte a su dígito hexadecimal equivalente. Cuando es necesario se añaden ceros para completar
un grupo de cuatro bits.
11101001102 = 0011 1010 0110
3A6
11101001102 = 3A616
SISTEMAS DE NUMERACIÓN
Los números se pueden representar en distintos sistemas de numeración que se diferencian entre si por su
base.
Así el sistema de numeración decimal es de base 10, el binario de base 2, el octal de base 8 y el
hexadecimal de base 16. El diseño de todo sistema digital responde a operaciones con números
discretos y por ello necesita utilizar los sistemas de numeración y sus códigos. En los sistemas digitales se
emplea el sistema binario debido a su sencillez.
Cualquier número de cualquier base se puede representar mediante la siguiente ecuación polinómica:
Siendo b la base del sistema de numeración. Se cumplirá que b>1; ai es un número perteneciente al
sistema que cumple la siguiente condición: 0 ≤ ai <b.
Su origen lo encontramos en la India y fue introducido en España por los árabes. Su base es 10.
Emplea 10 caracteres o dígitos diferentes para indicar una determinada cantidad: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
El valor de cada símbolo depende de su posición dentro de la cantidad a la que pertenece. Veámoslo con
un ejemplo:
1.5. CONVERSIONES
107 2 53 1
53 2 26 1
26 2 13 0
10710= 11010112
13 2 6 1
6 2 3 0
3 2 1 1
0,645 2 1,290 1
Cuando tengamos un número con decimales
seguiremos el siguiente procedimiento: 0,290 2 0,580 0
multiplicaremos por 2 la parte decimal y se toma
como dígito binario su parte entera. El proceso se 0,580 2 1,160 1
repite con la fracción decimal resultante del paso
anterior, hasta obtener una fracción decimal nula, o 0.160 2 0,320 0
bien hasta obtener el número de cifras binarias que
se desee. Ejemplo: 107,645. Como anteriormente 0,320 2 0.64 0
convertimos 107 a binario, el resultado de la
conversión quedaría así:
0.64 2 1.28 1
1101011, 101001012
0.28 2 0.56 0
0.56 2 1.12 1
Si la conversión es de octal a binario cada cifra se sustituirá por su equivalente binario. Tendremos en
cuenta la siguiente tabla para hacer la conversión de modo más rápido:
Si la conversión es de binario a octal se realiza de modo contrario a la anterior conversión, agrupando los
bits enteros y los fraccionarios en grupos de 3 a partir de la coma decimal. Si no se consiguen todos los
grupos de tres se añadirán, los ceros que sean necesarios al último grupo, veámoslo con un ejemplo:
010 2
110 6
42610 = 6528
La conversión entre binario y hexadecimal es igual al de la conversión octal y binario, pero teniendo en
cuenta los caracteres hexadecimales, ya que se tienen que agrupar de 4 en 4. La conversión de binario a
hexadecimal se realiza según el ejemplo siguiente:
0101 5
0110 6
0111 7
1000 8
1001 9
1010 A
1011 B
1100 C
1101 D
1110 E
1111 F
Contenido
Solución:
[mostrar] 7010
b)
Historia del sistema binario [editar] 7428
Solución:
48210
8. Para
pasar de
decimal a
octal:
a)
23610
Solución:
3548
b)
5274610
Solución:
1470128
En 1605 Francis Bacon habló de un sistema por el cual las letras del alfabeto podrían
reducirse a secuencias de dígitos binarios, la cuales podrían ser codificados como
variaciones apenas visibles en la fuente de cualquier texto arbitrario.
En 1854, el matemático británico George Boole, publicó un artículo que marcó un antes y
un después, detallando un sistema de lógica que terminaría denominándose Álgebra de
Boole. Dicho sistema desempeñaría un papel fundamental en el desarrollo del sistema
binario actual, particularmente en el desarrollo de circuitos electrónicos.
En noviembre de 1937, George Stibitz, trabajando por aquel entonces en los Laboratorios
Bell, construyó un ordenador basado en relés - al cual apodó "Modelo K" (porque lo
construyó en una cocina, en inglés "kitchen")- que utilizaba la suma binaria para realizar
los cálculos. Los Laboratorios Bell autorizaron un completo programa de investigación a
finales de 1938, con Stibitz al mando. El 8 de enero de 1940 terminaron el diseño de una
Calculadora de Números Complejos, la cual era capaz de realizar cálculos con números
complejos. En una demostración en la conferencia de la Sociedad Americana de
Matemáticas, el 11 de septiembre de 1940, Stibitz logró enviar comandos de manera
remota a la Calculadora de Números Complejos a través de la línea telefónica mediante un
teletipo. Fue la primera máquina computadora utilizada de manera remota a través de la
línea de teléfono. Algunos participantes de la conferencia que presenciaron la
demostración fueron John Von Neumann, John Mauchly y Norbert Wiener, el cual
escribió acerca de dicho suceso en sus diferentes tipos de memorias en la cual alcanzó
diferentes logros.
Representación [editar]
Un número binario puede ser representado por cualquier secuencia de bits (dígitos
binarios), que a su vez pueden ser representados por cualquier mecanismo capaz de estar
en dos estados mutuamente exclusivos. Las secuencias siguientes de símbolos podrían ser
interpretadas todas como el mismo valor binario numérico:
1 0 1 0 0 1 1 0 1 0
| - | - - | | - | -
x o x o o x x o x o
y n y n n y y n y n
El valor numérico representado en cada caso depende del valor asignado a cada símbolo.
En un ordenador, los valores numéricos pueden ser representados por dos voltajes
diferentes y también se pueden usar polaridades magnéticas sobre un disco magnético. Un
"positivo", "sí", o "sobre el estado" no es necesariamente el equivalente al valor numérico
de uno; esto depende de la arquitectura usada.
De acuerdo con la representación acostumbrada de cifras que usan números árabes, los
números binarios comúnmente son escritos usando los símbolos 0 y 1. Cuando son
escritos, los números binarios son a menudo subindicados, prefijados o sufijados para
indicar su base, o la raíz. Las notaciones siguientes son equivalentes:
0+0=0
0+1=1
1+0=1
1 + 1 = 10
100110101
+ 11010101
———————————
1000001010
Se puede convertir la operación binaria a una operación decimal resolver la decimal y del
resultado de la operación decimal se convierte a un resultado (número) binario.
La resta 0 - 1 se resuelve, igual que en el sistema decimal, tomando una unidad prestada
de la posición siguiente: 10 - 1 = 1 y me llevo 1, lo que equivale a decir en decimal, 2 - 1
= 1. Esa unidad prestada debe devolverse, sumándola, a la posición siguiente. Veamos
algunos ejemplos:
Dividir los números largos en grupos. En el siguiente ejemplo, vemos cómo se divide una
resta larga en tres restas cortas:
1011011 1011011
-0101110 C2 de 46 = 1010010 +1010010
———————— ————————
0101101 10101101
En el resultado nos sobra un bit, que se desborda por la izquierda. Pero, como el número
resultante no puede ser más largo que el minuendo, el bit sobrante se desprecia.
11011011 11011011
-00010111 C2 de 23 = 11101001 +11101001
————————— —————————
11000100 111000100
El algoritmo del producto en binario es igual que en números decimales; aunque se lleva
cabo con más sencillez, ya que el 0 multiplicado por cualquier número da 0, y el 1 es el
elemento neutro del producto.
10110
1001
—————————
10110
00000
00000
10110
—————————
11000110
100010010 |1101
——————
- 0000 010101
———————
10001
- 1101
———————
01000
- 0000
———————
10000
- 1101
———————
00111
- 0000
———————
01110
- 1101
———————
00001
1. Inicie por el lado derecho del número en binario, cada número multiplíquelo por 2 y
elévelo a la potencia consecutiva (comenzando por la potencia 0).
2. Después de realizar cada una de las multiplicaciones, sume todas y el número resultante
será el equivalente al sistema decimal.
Ejemplos:
También se puede optar por utilizar los valores que presenta cada posición del número
binario a ser transformado, comenzando de derecha a izquierda, y sumando los valores de
las posiciones que tienen un 1.
64 32 16 8 4 2 1
1 0 1 0 0 1 0
2
+16
64
----
82
Se divide el número decimal entre 2 cuyo resultado entero se vuelve a dividir entre 2 y así
sucesivamente. Una vez llegados al 1 indivisible se cuentan el último cociente, es decir el
uno final (todo número binario excepto el 0 empieza por uno), seguido de los residuos de
las divisiones subsiguientes. Del más reciente hasta el primero que resultó. Este número
será el binario que buscamos. A continuación se puede ver un ejemplo con el número
decimal 100 pasado a binario.
100|_2
0 50 |_2
0 25 |_2 --> 100 1100100
1 12 |_2
0 6 |_2
0 3 |_2
1 1
Ejemplo:
100|0
50|0
25|1 --> 1, 25-1=24 y seguimos dividiendo por 2
12|0
6|0
3|1
1|1 --> 100 1100100
Ejemplo:
20= 1|1
21= 2|1
22= 4|1
23= 8|0
24= 16|1
25= 32|0
26= 64|0
27= 128|1 128+16+4+2+1=151 10010111
Número en binario 000 001 010 011 100 101 110 111
Número en octal 0 1 2 3 4 5 6 7
Ejemplos:
111 = 7
110 = 6
Agrupe de izquierda a derecha: 67
111 = 7
001 = 1
11 entonces agregue un cero, con lo que se obtiene 011 = 3
Agrupe de izquierda a derecha: 317
011 = 3
000 = 0
1 entonces agregue 001 = 1
Agrupe de izquierda a derecha: 103.
247 (octal) = 010100111 (binario). El 2 en binario es 10, pero en binario de 3 bits es Oc(2)
= B(010); el Oc(4) = B(100) y el Oc(7) = (111), luego el número en binario será 010100111.
Binario a hexadecimal [editar]
Núme
ro en 00 00 00 00 01 01 01 01 10 10 10 10 11 11 11 11
binari 00 01 10 11 00 01 10 11 00 01 10 11 00 01 10 11
o
Núme
ro en
hexad 0 1 2 3 4 5 6 7 8 9 A B C D E F
ecima
l
Ejemplos:
1010 = A
1011 = B
1 entonces agregue 0001 = 1
Agrupe de derecha a izquierda: 1BA
0101 = 5
1111 = F
110 entonces agregue 0110 = 6
Ídem que para pasar de hexadecimal a binario, solo que se remplaza por el equivalente de
4 bits, como de octal a binario.