Menú
Está libre
registro
hogar  /  Navegantes/ Cualquier número puede considerarse real. Representar números en una computadora

Cualquier número puede considerarse real. Representar números en una computadora

caracteristica principal sistemas de números equilibrados: cuando se realizan operaciones aritméticas, no se utiliza la "regla de los signos".

Usando el sistema numérico de Fibonacci. En los albores de la era de la informática, se hicieron dos descubrimientos más en el campo de las formas posicionales de representar números, que, sin embargo, son poco conocidas y no atrajeron mucha atención de los matemáticos e ingenieros de esa época. Estamos hablando de las propiedades del sistema numérico de Fibonacci, o SS de la proporción áurea.

En las últimas décadas del siglo XX, un grupo de matemáticos liderado por un profesor en la URSS obtuvo resultados sumamente interesantes relacionados con la solución del problema de la confiabilidad del almacenamiento, procesamiento y transmisión de información en sistemas informáticos... Los matemáticos propusieron utilizar el sistema Fibonacci como SS en las computadoras. Recuerde que el alfabeto de este sistema son los números 0 y 1, y la base es la secuencia de números de Fibonacci: 1, 2, 3, 5, 8, 13, 21,

La principal ventaja de los códigos de Fibonacci para aplicaciones prácticas consiste en su redundancia "natural", que puede utilizarse con el fin de controlar conversiones numéricas. Esta redundancia se manifiesta en la propiedad de múltiples representaciones del mismo número. Por ejemplo, el número 30 en el código de Fibonacci tiene varias representaciones:

30 = 1001101FIB = 1010001FIB = 111101FIB.

En este caso, se pueden obtener diferentes representaciones de código del mismo número entre sí utilizando operaciones especiales de convolución de Fibonacci (011 → 100) y barrido (100 → 011) realizadas en la imagen de código del número. Si realizamos todas las convoluciones posibles sobre la imagen de código, llegamos a una imagen de Fibonacci especial, llamada forma mínima , en el que no hay dos unidades adyacentes. Si realizamos todas las operaciones de barrido posibles en la imagen de código, llegamos a una imagen de Fibonacci especial, llamada máximo , o desplegada ,formulario , en el que no aparecen dos ceros uno al lado del otro.

El análisis de la aritmética de Fibonacci mostró que sus principales operaciones son las operaciones de convolución, despliegue y la operación basada en ellas de reducir el código Fibonacci a la forma mínima.

Estos resultados matemáticos se convirtieron en la base del proyecto de creación de computadoras y sistemas de medida basado en el sistema numérico de Fibonacci.

Al desarrollar la base de elementos de la nueva tecnología informática, el principal elemento operativo fue el dispositivo para reducir el código de Fibonacci a una forma mínima. Este dispositivo se implementó a través de RS-flip-flops y puertas "Y" y "O". Se crearon prototipos de un microcircuito que realiza las siguientes operaciones: escritura y lectura de datos, convolución, barrido, movimiento, absorción, reducción a la forma mínima, suma, resta, cambio inverso, multiplicación lógica, suma lógica y suma módulo 2.

Una característica distintiva del microcircuito era la presencia de una salida de control, en la que la información sobre trabajo incorrecto microcircuitos.

Por tanto, el principal resultado de este desarrollo fue la creación del primer tecnologia computacional microcircuitos para la implementación de un procesador Fibonacci de autocontrol con 100% de garantía de detección de fallas que ocurren al conmutar disparadores.

Y aunque todavía no ha sido posible crear una computadora Fibonacci por varias razones, bases teóricas de esta dirección son de indudable interés y pueden convertirse en fuente de nuevas ideas no solo en el campo de la informática, sino también en el campo de las matemáticas. El uso de representaciones de "Fibonacci" en la técnica de medición y procesamiento digital señales.

Uso de un sistema de clases residual. En el desarrollo de la tecnología informática, los matemáticos siempre se enfrentan al problema más difícil: la creación de algoritmos eficientes (a menudo se les llama "limitantes") para realizar operaciones aritméticas en una computadora. Como parte de la solución de este problema, los científicos inventaron nuevos sistemas numéricos y desarrollaron aritmética computacional basados ​​en ellos, que hacen posible construir dispositivos informáticos, cuya velocidad y confiabilidad son superiores a las computadoras basadas en aritmética binaria. Estos SS incluyen un sistema no posicional de clases residuales, algunos sistemas numéricos jerárquicos, etc.

Los sistemas numéricos jerárquicos se construyen sobre la base de la idea de combinar SS posicionales y no posicionales, mientras que deben combinar lados positivos sistemas incluidos en ellos y estar libres de sus deficiencias. El principio de construcción de SS jerárquicos es generalmente simple. Algunos sistema externo estimación A con alfabeto a... Los números de este sistema se escriben en forma de palabras (códigos) de otro sistema numérico (interno) V con alfabeto R... Un ejemplo de este tipo de SS es el conocido sistema decimal binario que se utiliza para representar números decimales en algunas computadoras.

El sistema de clases residual (RNS) es un SS no posicional, cuyos números están representados por el resto de la división por el sistema base elegido PAG 1, PAG 2, ..., Rnorte y son números coprimos. Las operaciones de suma, resta y multiplicación de números en el RNS se realizan de forma independiente para cada base, sin traspasar entre dígitos.

Las operaciones como división, comparación, etc., que requieren información sobre el valor del número completo, se realizan en el RNS de acuerdo con algoritmos más complejos. Este es un inconveniente importante de este sistema numérico, que dificulta su uso generalizado como computadora. Sin embargo, hoy en computadoras modernas cuando se trabaja con números grandes y supergrandes, se utilizan RNS, porque solo la aritmética RNS le permite obtener los resultados de los cálculos en tiempo real.

En tales casos, valores cercanos a 2 metro (metro- la capacidad binaria del ordenador), por ejemplo: 2 metro-1 – 1, 2metro, 2metro-1 + 1, etc. Desde mediados del siglo pasado, científicos de muchos países del mundo se han ocupado del problema de aumentar la velocidad de las operaciones "inconvenientes" en el RNS. El propio RNS se ha utilizado ampliamente en sistemas informáticos durante varias décadas.

4.5. Formas de presentación y transformación de la información

4.5.1. Codificación y decodificación de información

En cualquier tipo de trabajo con información, siempre estamos hablando de su representación en forma de ciertas estructuras simbólicas.

Las representaciones de información unidimensionales más comunes, en las que los mensajes tienen la forma de una secuencia de caracteres. Sin embargo, su representación multidimensional también es muy utilizada.

La información se presenta en diversas formas durante la percepción del medio ambiente por organismos vivos y humanos, en los procesos de intercambio de información entre humanos y humanos, humanos y computadoras, computadoras y computadoras, etc. Conversión de información a partir de una forma de representación (sistema de signos ) a otro se le llama codificación .

En un sentido estricto, la codificación se entiende como una transición de la representación inicial de información, conveniente para la percepción humana, a una representación conveniente para el almacenamiento, transmisión y procesamiento.

Volver a la vista original se llama descodificación .

El medio de codificación es una tabla de correspondencia de sistemas de signos, que establece una correspondencia biunívoca entre signos o grupos de signos de dos sistemas de signos diferentes.

En el proceso de intercambio de información, a menudo es necesario realizar operaciones de codificación y decodificación de información. Cuando ingresa un carácter del alfabeto en una computadora presionando la tecla correspondiente en el teclado, el carácter se codifica, es decir, se convierte en un código de computadora. Cuando se muestra un carácter en la pantalla de un monitor o impresora, se produce el proceso inverso: decodificación, cuando el carácter se convierte de un código de computadora en su imagen gráfica.

Consideremos, como ejemplo de codificación, la correspondencia de los códigos digitales y de barras de un producto. Dichos códigos están disponibles en cada producto y le permiten identificar completamente el producto (país y compañía del fabricante, tipo de producto, etc.).

Los caracteres del código digital (números) corresponden al grupo de caracteres del código de barras (trazos estrechos y anchos, así como el tamaño de los espacios entre ellos). Un código digital es conveniente para una persona y un código de barras es conveniente para la contabilidad automatizada, que se lee con un haz de luz estrecho y se procesa posteriormente en los sistemas de contabilidad por computadora.

Al codificar información, se establecen los siguientes objetivos:

· Conveniencia de la implementación física;

· Facilidad de percepción;

· Alta velocidad de transmisión y procesamiento;

· Eficiencia, es decir, reducir la redundancia del mensaje;

· Fiabilidad, es decir, protección contra distorsiones accidentales;

Seguridad, es decir, protección contra acceso no deseado a la información.

Estos objetivos a menudo se contradicen entre sí, por ejemplo, la economía requiere reducir la redundancia del mensaje y la confiabilidad se logra solo debido a esta misma redundancia.

Para manipular la información presentada en la computadora, está destinado el dispositivo de almacenamiento (o memoria) de la computadora.

La información en la memoria de la computadora se registra en forma de código binario digital. En una computadora, la codificación binaria se usa para representar información, ya que fue posible crear de manera confiable dispositivos técnicos, que puede guardar y reconocer no más de dos estados (números) diferentes con una fiabilidad del cien por cien:

· Relés electromagnéticos (cerrado / abierto); fueron ampliamente utilizados en los diseños de las primeras computadoras;

· Área de la superficie del portador de información magnético (magnetizado / desmagnetizado);

· Área de la superficie del disco láser (refleja / no refleja);

Desencadenar; puede ser estable en uno de dos estados; ampliamente utilizado en memoria de acceso aleatorio computadora.

Todos los tipos de información en una computadora están codificados en lenguaje de máquina en forma de secuencias lógicas de ceros y unos (Fig. 4.2).

Tipo de informacion

Código binario

Numérico

Texto

Gráfico

Sonido

Arroz. 4.2. Codificación binaria información

La información en una computadora se representa en código binario, cuyo alfabeto consta de dos números (0 y 1).

Los números de código binario pueden verse como dos estados (eventos) igualmente probables. Al escribir un dígito binario, se realiza la elección de uno de dos estados posibles (uno de dos dígitos) y, por lo tanto, lleva una cantidad de información igual a 1 bit.

La cantidad de información que puede caber en un elemento (0 o 1), llamado poco , muy poco y no tiene ningún significado semántico. Sin embargo, si conecta varios de estos elementos en una celda, puede almacenar en la memoria tanta información como necesite.

Es importante que cada dígito del código binario de la máquina lleve información en 1 bit. Por lo tanto, dos dígitos llevan información en 2 bits, tres dígitos en 3 bits, etc. La cantidad de información en bits es igual al número de dígitos del código binario de la máquina.

Una secuencia de bits, considerada por el hardware de la computadora en su conjunto, se llama palabra de máquina .

4.5.2. Unidades para medir la cantidad de información

Una unidad de cantidad de información se considera aquella cantidad de información que contiene un mensaje que reduce a la mitad la incertidumbre. Unidad de medida de la cantidad de información poco (poco) recibe su nombre de la frase en inglés Digi binariot Es un dígito binario.

Si volvemos al experimento de lanzar una moneda, aquí la incertidumbre se reduce a la mitad y, por lo tanto, la cantidad de información recibida es igual a 1 bit.

1 byte = 23 bits = 8 bits.

En informática, el sistema educativo de múltiples unidades para medir la cantidad de información es algo diferente de los adoptados en la mayoría de las ciencias. Los sistemas métricos tradicionales, como el Sistema Internacional de Unidades (SI), utilizan un factor de 10 como múltiplos de múltiplos. norte, dónde norte= 3, 6, 9, etc., que corresponde a los prefijos decimales Kilo (103), Mega (106), Giga (109), etc.

La computadora opera con números no decimales, sino en sistema binario contando, por tanto, en múltiples unidades de medida de la cantidad de información, se utiliza el coeficiente 2 norte.

Por lo tanto, las unidades de medida de varios bytes de la cantidad de información se ingresan de la siguiente manera:

1 KB = 210 bytes = 1024 bytes;

1 MB = 210 KB = 1024 KB;

1 GB = 210 MB = 1024 MB.

4.5.3. Representación de enteros con y sin signo

Cualquier entero puede ser considerado como un número real, pero con una parte fraccionaria cero, es decir, podría limitarse a la representación en una computadora de números reales y la implementación de operaciones aritméticas sobre ellos. Sin embargo, para uso efectivo memoria, aumentando la velocidad de realización de cálculos e introduciendo la operación de división por completo con un resto, los números enteros se representan de formas especialmente diseñadas.

La introducción de formas especiales de representar números enteros se justifica por el hecho de que, con bastante frecuencia, en los problemas que se resuelven con la ayuda de una computadora, muchas acciones se reducen a operaciones con números enteros. Por ejemplo, en problemas de naturaleza económica, los datos son el número de acciones, empleados, repuestos, vehículos, etc., que son números enteros en su significado. Los números enteros se utilizan tanto para indicar la fecha y la hora como para numerar varios objetos: elementos de matriz, registros de bases de datos, direcciones de máquinas, etc.

Para la representación informática de números enteros, se suelen utilizar varias representaciones diferentes, que se diferencian entre sí por el número de dígitos y la presencia o ausencia de un dígito de signo. La representación sin firmar solo se puede utilizar para
enteros no negativos, los números negativos se representan solo en forma con signo.

Con representación sin signo, todos los bits de la celda se asignan al número en sí. Cuando se representa con un signo, el dígito más antiguo (izquierdo) se asigna al signo del número, los dígitos restantes se asignan al número real. Si el número es positivo, entonces se coloca 0 en el bit con signo, si el número es negativo - 1. Obviamente, las celdas del mismo tamaño pueden representar un rango mayor de enteros no negativos en representación sin signo que los números con signo. Por ejemplo, en un byte (8 bits) puede escribir números positivos del 0 al 255,
y con un signo, solo hasta 127. Por lo tanto, si se sabe de antemano que algún valor numérico siempre es no negativo, entonces es más ventajoso considerarlo sin signo.

Dicen que los enteros en una computadora se almacenan en el formato con punto fijo.

Representación de enteros positivos . Para obtener la representación por computadora de un entero sin signo en k-célula de memoria de bits, basta con traducirlo al sistema numérico binario y complementar el resultado obtenido con ceros a la izquierda para k descargas. Está claro que hay un límite en los números que podemos escribir. k-célula de bits.

El número máximo representable corresponde a unos en todos los dígitos de la celda (un número binario que consta de k unidades). Para
k-representación de bits será igual a 2 k- 1. El número mínimo está representado por ceros en todos los dígitos de la celda, siempre es igual a cero. A continuación se muestran los números máximos para la representación sin signo cuando diferentes significados k:

Número de descargas

Número máximo

Con la representación firmada de números enteros surgen conceptos como códigos de avance, retroceso y complementarios.

Representación de un número en la forma familiar de "valor de signo", en el que el dígito más significativo de la celda se asigna al signo, el resto k - 1 dígito: debajo de los dígitos del número, llamado codigo directo .

Por ejemplo, los códigos directos de los números binarios 110012 y –110012 para una celda de ocho bits son iguales y respectivamente. Los números enteros positivos se representan en una computadora mediante un código sencillo. El código directo de un entero negativo difiere del código directo del número positivo correspondiente en el contenido del bit de signo. Pero en lugar de código directo, una computadora usa código complementario para representar números enteros negativos.

Tenga en cuenta que el número máximo positivo que se puede escribir en representación con signo en k dígitos es igual a 2 k–1–1, que es casi dos veces menor que el número máximo en la representación sin signo en el mismo k descargas.

Ejemplo

Determina el número máximo positivo en representaciones de números con signo de ocho y dieciséis dígitos.

Solución... El número positivo máximo en 8 bits es 127 (27 - 1), en 16 bits es 32 - 1).

Ejemplo

El número 53 = 1101012 en representación de ocho bits es.

El mismo número 53 en 16 dígitos se escribirá de la siguiente manera :.

En cualquier caso, no importa si se utiliza la representación firmada o sin firmar.

Ejemplo

Para 200 =, no es posible una representación de 8 bits con signo, ya que el número máximo permitido en dicha representación es 127, pero en una representación de ocho bits sin signo parece.

atrás ,códigos numéricos adicionales . Para representar números enteros negativos en una computadora, se usa un código adicional, que le permite reemplazar la operación aritmética de resta con una operación de suma, lo que aumenta significativamente la velocidad de los cálculos. Antes de introducir la definición de código adicional, hacemos la siguiente nota importante.

V k-bit entero aritmética de computadora 2 k ≡ 0.

Esto puede explicarse por el hecho de que la notación binaria del número 2 k consta de una unidad y k ceros, y en una celda de k los dígitos solo pueden caber k dígitos, en este caso solo k ceros. En este caso, dicen que la unidad significativa ha ido más allá de la cuadrícula de bits.

k-poco código adicional numero negativo T Es una entrada en k dígitos del número positivo 2 k– |t | donde | t |- módulo de número negativo T,| t |< 2k– 1.

Averigüemos qué se complementa con el código adicional y con qué. Código de complemento de número negativo T¿Es la suma del módulo de este número a 2 (o a cero en k-aritmética de bits):

(2k– |T|) + |T| = 2k ≡ 0.

Algoritmo para obtener adicionales k-código de bit de un número negativo:

1. El módulo de un número está representado por código directo en k dígitos binarios.

2. Invierte los valores de todos los dígitos (reemplaza todos los ceros por unos y los unos por ceros), obteniendo así k-poco código inverso número negativo original.

3. Para el código inverso resultante, interpretado como k-bit número binario no negativo, agregue uno.

El código inverso es el complemento del número original al número
2k– 1 que consta de k binarios. Por lo tanto, agregar uno al código invertido le permite obtener el código complementario requerido.

Ejemplo

Obtenemos el código adicional del número -52 para celdas de ocho y dieciséis dígitos. Para una celda de ocho bits:

0011 0100 - código directo del número | –52 | = 52;

1100 1011 - código inverso del número -52;

1100 1100 es el código adicional del número -52. Para una celda de dieciséis bits: 0000 0000 0– código de número directo | –52 |;
1111 1111 1100 1011 - código inverso del número -52; 1111 1111 1100 1100 - código adicional del número -52.

4.5.4. Representación de información simbólica en una computadora

La información simbólica se almacena y procesa en la memoria de la computadora en forma de código digital. Dado que los códigos binarios se utilizan en dispositivos de procesamiento automático de información, los códigos digitales correspondientes a los símbolos se traducen a un sistema binario.

Al convertir caracteres (signos) en un código digital, debe tener lugar una correspondencia uno a uno entre los conjuntos de caracteres y códigos.

La tabla de codificación de caracteres para números de 8 bits, introducida por el Instituto de Normalización de EE. UU. Y se convirtió en el estándar internacional de facto, se llama ASCII (Código estándar estadounidense para el intercambio de información).

La parte básica de la tabla ASCII fija los valores de los códigos de 0 a 127 y es generalmente aceptada en todo el mundo, y la parte extendida se refiere a caracteres con números de 128 a 255.

Los primeros 32 códigos de la tabla base, comenzando desde cero, contienen códigos de control que no corresponden a ningún carácter de idioma y, en consecuencia, estos códigos no se muestran en la pantalla ni en los dispositivos de impresión. Los códigos 32 a 127 corresponden al alfabeto inglés, signos de puntuación, operaciones aritméticas y algunos caracteres auxiliares.

Cada país utiliza su propia parte extendida de la tabla ASCII (códigos 128-255 o códigos ASCII extendidos), que contiene las letras de los alfabetos nacionales, símbolos pseudográficos y símbolos científicos. En Rusia, para la parte extendida de la tabla, se utilizan las codificaciones KOI-8, Windows-1251, ISO, etc. Por lo tanto, los textos creados en una codificación no se mostrarán correctamente en otra codificación.

Dificultades para crear sistema unificado La codificación de datos para todo el mundo se debe a un conjunto limitado de códigos. Obviamente, si codifica caracteres no con números binarios de ocho bits, sino con números con gran cantidad dígitos, entonces el rango de valores posibles de los códigos será mucho mayor. Este sistema, basado en la codificación de caracteres de 16 bits, se denomina universal: UNICODE. Dieciséis dígitos permiten proporcionar códigos únicos para 216 = 65536 caracteres diferentes; esto es suficiente para acomodar la mayoría de los idiomas del mundo en una tabla de caracteres.

4.5.5. Representación de punto flotante

A diferencia de los tipos ordinales (todos los enteros, simbólicos, lógicos), cuyos valores siempre se comparan con un número de enteros y, por lo tanto, se representan en la memoria de la máquina de manera absolutamente exacta, el valor de los tipos reales determina el número solo con cierta precisión finita, dependiendo del formato interno del número real ...

Escribir un número de coma flotante es muy remedio efectivo representaciones de números reales muy grandes y muy pequeños, siempre que contengan un número limitado de dígitos significativos y, por lo tanto, no todos los números reales se pueden representar en la memoria. Normalmente, el número de dígitos significativos utilizados en los cálculos es tal que los errores de redondeo son insignificantes para la mayoría de los problemas.

Cualquier número real X, representado en radix norte, Se puede escribir como

X = ± Minnesota ± pag,

dónde metro- mantisa; pag- orden numérico.

Si | metro| < 1, то запись числа называется нормализованной слева.

Los siguientes ejemplos muestran cómo se puede representar cualquier número en forma de punto flotante:

a) en notación decimal

372,95 = 0,37295 103;

25 = 0,025 · 103 = 0,25 · 102;

0,0000015 = 0,15 · 10–5 = 0,015 · 10–4;

b) en el sistema numérico binario

11010,1101 = 0,26 = 0,25;

0,011011 = 0,11011 2-1;

0,1 = 0,1 20.

Aquí, el orden determina cuántas posiciones y en qué dirección debe desplazarse la coma en la mantisa.

El número se llama normalizado a la derecha si hay un valor distinto de cero después de la coma en la mantisa. Por ejemplo, los números 0.0007610 y 0, presentados respectivamente en la forma 0.076 · 10-2 y 0.011 · 2-2 no están normalizados a la derecha, pero en la forma 0.76 · 10-3 y 0.11 · 2-3 sí lo son.

Distribuido actualmente (descrito en Estándar IEEE 754) también otra forma de notación - normalizada, en la que la mantisa de un número decimal toma valores de 1 (inclusive) a 10
(no incluido), y la mantisa de un número binario toma valores de 1 (incluido) a 2 (no incluido) (1 ≤ metronorte). De esta forma, cualquier número (excepto 0) se escribe de forma única. La desventaja es que es imposible representar 0 en esta forma, por lo tanto, la representación de números en informática proporciona un signo especial (bit) para el número 0.

Dado que el bit más significativo (parte entera del número) de la mantisa de un número binario (excepto 0) en forma normalizada es igual a "1", al escribir la mantisa de un número en una computadora, el bit más significativo puede omitirse, que se utiliza para reducir la cantidad de información almacenada o (al mismo volumen) para aumentar la precisión del almacenamiento del número.

0 "style =" border-collapse: collapse; border: none ">

Dígitos significantes

Característica

en la característica

X = 27 + p - 1

X = 210 + p - 1

X = 214 + p - 1

El algoritmo para formar la representación de la máquina de un número real en la memoria de la computadora consta de los siguientes puntos:

1. El número está representado en código binario.

2. El número binario está normalizado. En este caso, para números mayores que uno, el punto flotante se lleva a la izquierda, definiendo un orden positivo. Para números menores a uno, el punto se envuelve a la derecha, definiendo un orden negativo.

3. Teniendo en cuenta el tipo de número real, la característica se determina según la tabla.

4. En el campo asignado en memoria, de acuerdo con el tipo de número, se escribe la mantisa, característica y signo del número. Al hacerlo, debe tenerse en cuenta lo siguiente:

· Para números de tipo real, la característica se almacena en el byte bajo de la memoria, para números de tipo simple, doble, extendido - en bytes altos;

· El signo del número está siempre en el bit más significativo del byte más significativo;

· La mantisa siempre se almacena en código directo;

· El primer bit de la mantisa (siempre 1 para un número normalizado) para números como real, sencillo, doble no se almacena (está oculto). En números extendidos, todos los dígitos de la mantisa se almacenan en la memoria de la computadora.

El formato de la representación de los datos de la máquina (por ejemplo, el tipo único) es el siguiente:

ml. byte st. byte

6– No. de bits de memoria

metro....metro metro....metro NS metro...metro s NS...NS

dónde s- bit de signo;

NS- característica del número;

metro Es la mantisa normalizada.

Palabras clave:

  • descarga
  • representación de entero sin signo
  • representación de entero con signo
  • representación de números reales
  • formato de punto flotante

1.2.1. Representación entera

La memoria de la computadora consta de celdas, cada una de las cuales es sistema fisico que consta de una serie de elementos homogéneos. Estos elementos tienen dos estados estables, uno de los cuales corresponde a cero y el otro a uno. Cada uno de estos elementos se utiliza para almacenar uno de los bits: los dígitos de un número binario. Es por eso que a cada elemento de la celda se le llama bit o descarga (Fig. 1.2).

Arroz. 1.2. Celda de memoria

Para la representación informática de números enteros, se utilizan varias representaciones diferentes, que se diferencian entre sí en el número de bits (normalmente se asignan 8, 16, 32 o 64 bits para los números enteros) y la presencia o ausencia de un dígito de signo. La representación sin signo solo se puede usar para números enteros no negativos, los números negativos se representan solo en forma con signo.

Los datos sin firmar se han generalizado en la informática. Estos incluyen objetos como direcciones de celda, todo tipo de contadores (por ejemplo, el número de caracteres en el texto), así como números que indican la fecha y hora, tamaños imágenes gráficas en píxeles, etc.

El valor máximo de un número entero no negativo se alcanza cuando las unidades se almacenan en todos los dígitos de la celda. Para la representación de n bits, será igual a 2 n -1. El número mínimo corresponde a n ceros almacenados en n bits de memoria y es igual a cero.

Los siguientes son los valores máximos para enteros de n bits sin signo:

Para obtener una representación por computadora de un entero sin signo, es suficiente convertir el número al sistema numérico binario y complementar el resultado con ceros a la izquierda del ancho de bits estándar.

Ejemplo 1. El número 53 10 = 110101 2 en representación de ocho dígitos es:

El mismo número 53 en dieciséis dígitos se escribirá de la siguiente manera:

Cuando se representa con un signo, el dígito más antiguo (izquierdo) se asigna al signo del número, los dígitos restantes se asignan al número en sí. Si el número es positivo, entonces O se coloca en el bit de signo, si el número es negativo - 1. Esta representación de números se llama código directo. En una computadora, los códigos directos se utilizan para almacenar números positivos en dispositivos de memoria para realizar operaciones con números positivos.

El sitio web del Centro Federal de Información y Recursos Educativos (http://fcior.edu.ru/) contiene el módulo de información “Número y su código de computadora”. Con este recurso puedes conseguir Información adicional sobre el tema en estudio.

Para realizar operaciones con números negativos, se usa un código adicional para reemplazar la operación de resta por suma. Puede averiguar el algoritmo para generar código adicional utilizando el módulo de información "Código adicional" publicado en el sitio web del Centro Federal de Información y Recursos Educativos (http://fcior.edu.ru/).

1.2.2. Representación de números reales

Cualquier número real A se puede escribir en forma normal (científica, exponencial):

А = ± m q p,

    m es la mantisa del número;

    p es el orden del número.

Por ejemplo, el número 472,000,000 se puede representar de la siguiente manera: 47.2 10 7, 472 10 6, 4720 10 7, etc.

Es posible que se haya encontrado con la forma normal de escribir números al realizar cálculos con una calculadora, cuando se recibieron los registros de respuesta de la siguiente forma: 4.72E + 8.

Aquí, el signo "E" denota la base del sistema numérico decimal y se lee como "multiplica por diez a la potencia".

En el ejemplo anterior, puede ver que la posición de la coma en el registro numérico puede cambiar. Por lo tanto, la representación en una computadora de números reales en forma normal se llama representación de punto flotante.

Para mantener la coherencia, la mantisa generalmente se escribe como una fracción regular con un dígito distinto de cero después del punto decimal. En este caso, el número 472,000,000 se representará como 0.472 10 9

Un número de coma flotante puede ocupar 32 o 64 bits en la memoria de la computadora. En este caso, los dígitos se asignan para almacenar el signo de la mantisa, el signo de orden, orden y mantisa.

El rango de representación de números reales está determinado por el número de bits asignados para almacenar el orden del número, y la precisión está determinada por el número de bits asignados para almacenar la mantisa.

El valor máximo del orden del número, como puede ver en el ejemplo anterior, es 1111111 2 = 127 10, y por lo tanto el valor máximo del número es:

0,11111111111111111111111 10 1111111

Intente averiguar por sí mismo cuál es el equivalente decimal de este valor.

Una amplia gama de números de coma flotante es importante para resolver problemas científicos y de ingeniería. Al mismo tiempo, debe entenderse que los algoritmos para procesar números en formato de coma flotante consumen más tiempo que los algoritmos para procesar números enteros.

La cosa más importante

Para la representación informática de números enteros, se utilizan varios métodos diferentes, que se diferencian entre sí en el número de dígitos (8, 16, 32 o 64) y la presencia o ausencia de un dígito de signo.

Para representar un entero sin signo, debe convertirse a un sistema numérico binario y rellenarse con ceros desde la izquierda hasta el ancho de bits estándar.

Cuando se representa con un signo, el bit más significativo se asigna al signo del número, los dígitos restantes se asignan al número en sí. Si el número es positivo, entonces se coloca 0 en el bit de signo, si el número es negativo, entonces 1. Los números positivos se almacenan en la computadora en código directo, negativo - en complementario.

Los números reales en la computadora se almacenan en formato de punto flotante. En este caso, cualquier número se escribe de la siguiente manera:

А = ± m q p,

    m es la mantisa del número;

    q - base del sistema numérico;

    p es el orden del número.

Preguntas y tareas

  1. ¿Cómo se representan los números enteros positivos y negativos en la memoria de la computadora?
  2. Cualquier entero se puede considerar como un número real, pero con una parte fraccionaria cero. Justificar la conveniencia de contar con métodos especiales de representación informática de números enteros.
  3. Representa el número 63 10 en formato de 8 bits sin firmar.
  4. Encuentre los equivalentes decimales de números por sus códigos directos, escritos en formato de 8 bits con signo:
  5. ¿Cuál de los números 443 8, 101010 2, 256 10 se puede guardar en formato de 8 bits?
  6. Anote los siguientes números en forma natural:

      a) 0,3800456 10 2;

      b) 0,245 10 -3;

      c) 1,256900E + 5;

      d) 9.569120E-3.

  7. Anote el número 2010.0102 10 cinco diferentes caminos en forma normal.
  8. Escriba los siguientes números en forma normal con la mantisa normalizada, una fracción regular con un dígito distinto de cero después del punto decimal:

    a) 217,934 10;

    c) 0,00101 10.

  9. Dibuje un diagrama que vincule los conceptos clave discutidos en este párrafo.

§ 1.2. Representar números en una computadora

Representación de números en la computadora. Preguntas y tareas

1. Lea los materiales de presentación del párrafo contenido en aplicación electrónica al libro de texto. Utilice estos recursos para ayudarlo a responder preguntas y completar las tareas.

2. ¿Cómo se representan los números enteros positivos y negativos en la memoria de la computadora?

3. Cualquier número entero puede considerarse real, pero con una parte fraccionaria cero. Justificar la conveniencia de contar con métodos especiales de representación informática de números enteros.

4. Represente el número 63 10 en formato de 8 bits sin firmar.

5. Encuentre los equivalentes decimales de números por sus códigos directos, escritos en formato de 8 bits con signo:

    a) 01001100;
    b) 00010101.

6. ¿Qué números 443 8, 101010 2, 256 10 se pueden guardar en formato de 8 bits?

7. Escriba los siguientes números en forma natural:

    a) 0,3800456 10 2;
    b) 0,245 10 -3;
    a) 1,256900E + 5;
    a) 9.569120E-3.

8. Escribe el número 2010.0102 10 de cinco formas diferentes en notación exponencial.

9. Escriba los siguientes números en forma exponencial con la mantisa normalizada, una fracción regular con un dígito distinto de cero después del punto decimal:

    a) 217,934 10;
    b) 75321 10;
    c) 0,00101 10.

10. Dibuje un diagrama que vincule los conceptos clave discutidos en este párrafo.

Respuestas: representar números en una computadora

    9.a) 0,217934 10 3; b) 0,75321 10 5; c) 0,101 10 -2.

Hay dos formatos principales para representar números en la memoria de la computadora, uno de ellos se usa para codificar números enteros (que representa un número en formato de punto fijo), el segundo se usa para especificar un subconjunto de números reales (que representa un número en punto flotante formato). Consideremos cada uno de los formatos con más detalle.

1.1. Representación entera

Cualquier entero puede ser considerado como un número real, pero con una parte fraccionaria cero, es decir, podría limitarse a la representación de números reales en una computadora y la implementación de operaciones aritméticas sobre ellos, sin embargo, para usar eficientemente la memoria de la computadora. , aumentar la velocidad de los cálculos e introducir una operación de división de enteros. Los enteros se representan de formas especialmente diseñadas.

Para la representación informática de números enteros, se suelen utilizar varios métodos diferentes, que se diferencian entre sí por el número de dígitos binarios y la presencia o ausencia de un bit de signo.

Los enteros en una computadora se almacenan en la memoria en un formato con punto fijo... En este caso, cada bit de la celda de memoria siempre corresponde al mismo bit, y la "coma" "está" a la derecha después del bit menos significativo, es decir, fuera de la cuadrícula de bits.

1.1.1. Enteros sin signo

Considere codificar enteros sin signo usando el ejemplo de datos de tipo byte en el idioma Básico y no firmado carbonizarse en el idioma CON++ ocupando un byte en la memoria.

Para obtener una representación informática (interna) de un número entero no negativo de un byte, basta con traducirlo a un sistema numérico binario y el resultado resultante, llamado código directo del número, se complementa con ceros a la izquierda a ocho bits.

El número mínimo está representado por ceros en todos los dígitos y es igual a cero. El número máximo representable corresponde a unos en todos los dígitos de la celda (un número binario formado por ocho unos), es igual a 255 (). En la Tabla se muestran ejemplos de codificación de enteros sin signo de un solo byte. 1.

Pueden usarse números enteros no negativos de un byte, por ejemplo, para organizar varios contadores, registrar direcciones de celda, fecha y hora, y tamaño de imágenes gráficas en píxeles.

Para mejorar la legibilidad de la representación interna de un número, se escribe en un sistema numérico hexadecimal.

tabla 1

Ejemplos de codificación de enteros sin signo

1.1.2. Enteros firmados

Considere codificar enteros con signo usando el tipo de datos como ejemplo entero en el idioma Básico y En t en el idioma CON++, ocupando dos bytes (16 bits) en la memoria.

Cada uno de los 16 bits tiene un propósito específico, la forma de representar un entero con signo se muestra en la Fig. 1. El bit más significativo de la celda se asigna bajo el signo: 0 - para números positivos, 1 - para números negativos.

Para representar enteros con signo en una computadora, se usa un código adicional, que le permite reemplazar la operación aritmética de resta con una operación de suma, lo que aumenta significativamente la velocidad de los cálculos.

Para comprender qué es el código complementario, considere los códigos directos e inversos.

Observación 1... Para los números positivos, los tres códigos coinciden con la representación binaria del número utilizando dieciséis dígitos binarios, con ceros escritos en los dígitos vacíos.

Arroz. 1. Forma de entero con signo

Imagina algoritmo obteniendo un código binario adicional de dieciséis bits de un número negativo.

1) Escriba el código directo de un número negativo en 16 dígitos binarios. Para hacer esto, el módulo de un entero negativo debe convertirse a un sistema numérico binario y el resultado obtenido a la izquierda debe complementarse con ceros a 16 bits.

2) Escriba el código inverso de un número negativo en 16 dígitos binarios. Para hacer esto, invierta los valores de todos los dígitos del código directo (reemplace todos los ceros por unos y todos los unos por ceros).

3) Escriba el código de complemento de un número negativo en 16 dígitos binarios. Para hacer esto, agregue uno al código inverso, considerado como un número binario no negativo de dieciséis bits.

Observación 2... El código inverso de un número negativo es el módulo del complemento de este número al número
, y el código complementario depende del número
.

En la tabla se muestran ejemplos de representación de enteros con signo de dos bytes. 2.

El número negativo más pequeño que se puede representar con dos bytes es –32768.

El número positivo máximo representable corresponde a unos en todos los dígitos de la celda (un número binario formado por cero (en el bit de signo) y quince unos), es igual a 32767 (
).

Tabla 2

Ejemplos de representación de enteros con signo de dos bytes


REPRESENTACIÓN DE NÚMEROS INTEGRALES Dado que cualquier número entero se puede representar como un número real, pero con una parte fraccionaria cero, sería posible limitarnos a la representación de números reales en una computadora y la implementación de operaciones aritméticas sobre ellos. Sin embargo, para un uso eficiente de la memoria, aumentar la velocidad de realización de cálculos, introducir una operación de división de enteros con un resto (en pascal DIV y MOD) Los enteros se representan de formas especialmente diseñadas.


La introducción de formas especiales de representar números enteros se justifica por el hecho de que, a menudo, en los problemas resueltos con una computadora, muchas acciones se reducen a operaciones con números enteros. Por ejemplo, en problemas de carácter económico, donde el dato es el número de acciones, empleados, repuestos, vehículos, etc. para indicar la fecha y la hora; para numerar varios objetos: elementos de matriz, registros de bases de datos, direcciones de máquinas, etc.




REPRESENTACIÓN INTEGRAL SIN FIRMAR Todos los dígitos de la celda se asignan al número en sí mismos dígitos de la cuadrícula de bits Ejemplo: = Rango de números representados: A min = = 0 10 A max = = 2 8 -1 = Rango en pascal - tipo BYTE


Dígitos de cuadrícula de 2.16 bits Rango de números representados: A min = = 0 10 A max = = = Rango En pascal - tipo WORD cuadrícula de bits A min = 0 A max = = cuadrícula de bits A min = 0 A max = =


PRESENTACIÓN DE NÚMEROS INTEGRALES CON SIGNO El dígito más significativo de la cuadrícula de dígitos se asigna al signo: 0 - para número positivo 1 - para números negativos 1. Dígitos de cuadrícula de 8 dígitos Ejemplo: = Signo de un número positivo Ejemplo: = Signo de un numero negativo


El rango de números representados: A max = = 2 7 -1 = A min = En pascal - escriba SHORTINT bit grid A max = = = A min = En pascal - escriba INTEGER




Código de máquina directo Representación de un número en la forma habitual de "valor de signo", cuando el primer bit de una palabra de n bits está firmado y los n-1 bits restantes representan los dígitos digitales de un número en el sistema numérico binario, se llama código directo de un número binario. El código directo de un número entero coincide completamente con el registro del número en sí en la cuadrícula de bits de una computadora. El código directo de un número entero coincide completamente con el registro del número en sí en la cuadrícula de bits de una computadora. El código de avance de un entero negativo difiere del código de avance del número positivo correspondiente en el contenido del dígito de signo. El código directo de los números X = e Y = en una cuadrícula de ocho bits se ve así:


En el sistema de códigos directos, hay dos representaciones diferentes del cero: - 0 positivo; - 0 negativo. Ambas representaciones son completamente iguales. El código directo se utiliza para almacenar números positivos y negativos en dispositivos de memoria y para representar números positivos cuando se realizan operaciones en dispositivos aritméticos.


Códigos inversos complementarios Códigos complementarios e inversos Para simplificar los diseños de los dispositivos aritméticos de las computadoras, todas las operaciones aritméticas, por regla general, se reducen a la suma (operación de resta) oa una serie de sumas y desplazamientos (multiplicación y división). La sustitución de la operación de resta (suma algebraica) por suma aritmética en una computadora se realiza mediante códigos inversos y complementarios. Código de complemento positivo El código de complemento positivo es el mismo que este número.


Explicación de la esencia de los códigos especiales ... ... - + Consideremos un ejemplo de un contador inverso para números decimales de 3 dígitos: 999 + 1 = 1000 - ¡desbordamiento de la cuadrícula de bits! = -según el contador 999 - código -1! 000 a + (-a) = (-005) = = - código adicional del número - 2 = 5 + (-2) = = - 5 = 7 + (-5) = = Si consideramos que la unidad de desbordamiento es perdido, entonces obtenemos resultados correctos Para eliminar la ambigüedad en el anillo, consideraremos la mitad de los estados (0-499) como códigos de cero y números positivos, y la mitad restante () como códigos de números negativos.


Código complementario para un número negativo El código complementario para un número negativo es igual al complemento de su valor al número que ocurre cuando la cuadrícula de bits se desborda qn, donde q es la base del sistema numérico, n es el número de bits en la cuadrícula de bits. qn - se llama constante para la formación de un código adicional.Operación C = A - B, donde A y B son números enteros positivos en cualquier sistema numérico, se puede representar como: C = A - B = A + (-B) = A + (-B) + qn - qn = A + (qn - B) - qn А - el primer término código complementario qn - В - código adicional del número –В (segundo término) qn - constante eliminando la unidad de desbordamiento


Ejemplo. A = 95 10, B = 43 10, n = 2. Encuentre C = AB. [-B dk] = 100 - 43 = 57 C = 95 + [-B dk] - 100 = - 100 = 152 - 100 = 52 La unidad en el dígito más significativo de la suma puede simplemente tacharse. Es necesario encontrar una manera de obtener el complemento de un número arbitrario X a qn sin utilizar la resta: C = A - B = A + (-B) = A + (-B) + qn - qn = A + (qn -1- B) - qn + 1 La expresión qn - 1 - B determina el número B obtenido al reemplazar cada dígito del número B con su complemento al dígito q –1. Entonces, = = 999. El código inverso B se llama el código inverso del número B; q n -1 es la constante para la formación del código inverso


Es fácil obtener un código adicional del código inverso: B + B = qn -1 qn - B = B + 1 Código adicional del código inverso El código adicional se obtiene sumando uno al bit menos significativo del código inverso . Por lo tanto, el complemento de números binarios se puede encontrar sin pasar por la operación de resta. En el código inverso, como en el directo, hay un cero positivo y negativo. Solo el código de complemento a dos de in tiene una única representación. Para una longitud determinada de la cuadrícula de bits, el código de complemento representa uno más números negativos que positivos. Acordamos denotar los códigos directo, inverso y adicional del número A al [A pk], [A ok], [A dk].


Ejemplo. Encuentra los códigos de avance, retroceso y adicionales de los números A = 34 y B = [A pk] =, [A ok] =, [A dk] = [V pk] =, [V ok] =, [V dk] = Algoritmo para obtener código complementario de un número negativo. 1. El módulo de un número está representado por código directo en k dígitos binarios. 2. Invertir los valores de todos los bits: reemplazar todos los ceros por unos y los unos por ceros (así se obtiene el código inverso de k bits del número original); 3. Al código inverso recibido, interpretado como un número binario no negativo de k bits, agregue uno.


Ejemplos. 1. Dado un número decimal entero negativo M = -20. Representa un número de código de máquina en una cuadrícula de 16 bits en notaciones binarias y hexadecimales. M = -20 = 2 = 2 = 2 = 16 = FFEC


2. Un número entero se da en forma de código de máquina binario hexadecimal. Determine el valor decimal de este número: K a = FFD4 El primer dígito de F, por lo tanto, el número es negativo y se almacena en la computadora en forma de código de máquina adicional. FFD4 16 = [dk] [ok] - código inverso del número PC = [pc] - adelante código binario números Luego número decimal a = = - (32 + 8 + 4) = -44 - número decimal


Método 2: mediante el sistema numérico hexadecimal K a = FFD4


Acciones en códigos de máquina de enteros Dado: números decimales A = 34 y B = 30 Encontrar: A + B, A - B, B - A en códigos de máquina binarios en una cuadrícula de 8 bits. = [A ok] = [A dk] = [-A pc] = [-A ok] = [-A dk] = [-B pc] = [-V ok] = [-V dk] = [V pc ] = [V ok] = [V dk] =


[A + B] NS = = A + B = 64 [A - B] NS = = A - B = 4 [B - A] NS = =


Acciones en códigos máquina de números con punto fijo (en notación hexadecimal) Dado: números decimales A = 34 y B = 30 Encontrar: A + B, A - B, B - A en códigos máquina hexadecimales en una cuadrícula de 16 bits. .. 1) A = 34 = 22 16 V = 30 = 1E 16 pc = PC = 001E 16 KA + KB = E = A + B = = 64 2) PC = 801E 16 DC = E 16 = FFE2 16 KA + KB = FFE2 = A - B = = 4




En las computadoras modernas, la forma de máquina de un número no almacena el orden en sí, sino su valor sesgado, una característica del número. Esto se hace para no conservar el rótulo de la orden y, por tanto, para facilitar las operaciones sobre las órdenes; aumentar el rango de números representados ... Signo de la mantisa característica de la mantisa La mantisa normalizada siempre tiene un bit entero 0 y, por lo tanto, este 0 no se almacena en la memoria de la computadora, solo está implícito. Esta útil solución técnica le permite aumentar el número de dígitos y, por lo tanto, la precisión de los cálculos.


Ejemplos Representar números reales como códigos de máquina de números de punto flotante en una cuadrícula de 32 bits a 16 s / s: a) A = 32008.5 b) B =, 5 c) C = 15 d) D = Encontremos la mantisa normalizada y las características. de estos números: a) A = 32008.5 = 7D08.8 16 = 0.7D m A = 0.7D088p xA = 4 + 40 = 44 16 = Signo- 0 Característica Parte fraccionaria de la mantisa Mantisa normalizada Característica KA = = = 43FA> 0 0">


B) B =, 5 = -7D08.8 16 = - 0.7D m B = -0.7D088p xB = 4 + 40 = 44 16 = Signo - 1 Característica Parte fraccionaria de la mantisa Mantisa normalizada Característica K B = = = C3FA


0 14 16 c) D = - = - 0,9 16 m B = 0,9 16 p xB = 40 + 0 = 40 "título =" (! LANG: c) C = 15 = F, E 16 mc = 0, FE 16 p xA = 40 + 1 = 41 16 Signo- 0 Característica- 1000001 Parte fraccionaria- 1111 1110 0000 0000 0000 0000 mantisa KC = 0.1000001.1111 1110 0000 0000 0000 0000 2 = = 41FE0000 16> 0 14 16 c) D = - = - 0,9 16 m B = 0,9 16 p xB = 40 + 0 = 40" class="link_thumb"> 28 !} c) C = 15 = F, E 16 mc = 0, FE 16 p xA = 40 + 1 = 41 16 Signo - 0 Característica Parte fraccionaria de la mantisa KC = = = 41FE> c) D = - = - 0,9 16 m B = 0,9 16 p xB = 40 + 0 = 40 16 Signo- 1 Característica Parte fraccionaria de la mantisa KD = = C 0 14 16 c) D = - = - 0,9 16 m B = 0,9 16 p xB = 40 + 0 = 40 "> 0 14 16 c) D = - = - 0.9 16 m B = 0.9 16 p xB = 40 + 0 = 40 16 Signo- 1 Característica- 1000000 Parte fraccionaria- 1001 0000 0000 0000 0000 0000 mantisa KD = 1.1000000.1001 0000 0000 0000 0000 0000 2 = C0900000 16 0 14 16 c) D = - = - 0,9 16 m B = 0,9 16 p xB = 40 + 0 = 40 "título =" (! IDIOMA: c) C = 15 = F, E 16 mc = 0, FE 16 p xA = 40 + 1 = 41 16 Signo- 0 Característica- 1000001 Parte fraccionaria- 1111 1110 0000 0000 0000 0000 mantisa KC = 0.1000001.1111 1110 0000 0000 0000 0000 2 = = 41FE0000 16> 0 14 16 c) D = - = - 0,9 16 m B = 0,9 16 p xB = 40 + 0 = 40"> title="c) C = 15 = F, E 16 mc = 0, FE 16 p xA = 40 + 1 = 41 16 Signo- 0 Característica- 1000001 Parte fraccionaria- 1111 1110 0000 0000 0000 0000 mantisa KC = 0.1000001.1111 1110 0000 0000 0000 0000 2 = = 41FE0000 16> 0 14 16 c) D = - = - 0,9 16 m B = 0,9 16 p xB = 40 + 0 = 40">!}


Acciones sobre números representados en forma exponencial 1. Los números en forma exponencial se almacenan en la memoria en código directo con mantisas normalizadas. 2. La adición de códigos se realiza agregando la mantisa solo para los mismos órdenes (características) de los términos. Se elige el orden más alto para el común. 3. Los algoritmos para la operación de suma algebraica después de igualar las características dependen de los signos de los términos. 4. Los resultados en código directo están normalizados.


Ejemplos Realice la operación de suma de códigos de máquina de números A y B con punto flotante en una cuadrícula de 32 bits. Como respuesta, anote el código de resultado (en los segundos y 16 s / s) y el número decimal correspondiente 1) KA = 43.F34000K B = C1.A13000 a) m A = 00.F34m B = 00.A13 P Ax = 43P Bx = 41 => P = 2 => m B = 00.00A13 - PC _ A13 FF.FF5ED b) m A + m B = 00.F34 FF.FF5ED 100.F29ED> 0 => m A + B = 00.F29ED P = 2 => m B = 00.00A13 - PC _100.00000 00.00A13 FF.FF5ED b) m A + m B = 00.F34 FF.FF5ED 100.F29ED> 0 => m A + B = 00.F29ED " >


P A + B = 3A + B = 0.F29ED = F29, ED 16 = / 16 + 13/256 = / 256 K A + B = = = 43.F29ED0