Galería de mapas mentales Capítulo 2 Representación y operación de datos
Este es un mapa mental sobre la representación y operación de datos en el Capítulo 2, incluido el sistema numérico y la codificación, los métodos de operación y los circuitos de operación, la representación y operación de números de punto flotante, etc.
Editado a las 2024-01-16 15:53:26,Este es un mapa mental sobre una breve historia del tiempo. "Una breve historia del tiempo" es una obra de divulgación científica con una influencia de gran alcance. No sólo presenta los conceptos básicos de cosmología y relatividad, sino que también analiza los agujeros negros y la expansión. del universo. temas científicos de vanguardia como la inflación y la teoría de cuerdas.
¿Cuáles son los métodos de fijación de precios para los subcontratos de proyectos bajo el modelo de contratación general EPC? EPC (Ingeniería, Adquisiciones, Construcción) significa que el contratista general es responsable de todo el proceso de diseño, adquisición, construcción e instalación del proyecto, y es responsable de los servicios de operación de prueba.
Los puntos de conocimiento que los ingenieros de Java deben dominar en cada etapa se presentan en detalle y el conocimiento es completo, espero que pueda ser útil para todos.
Este es un mapa mental sobre una breve historia del tiempo. "Una breve historia del tiempo" es una obra de divulgación científica con una influencia de gran alcance. No sólo presenta los conceptos básicos de cosmología y relatividad, sino que también analiza los agujeros negros y la expansión. del universo. temas científicos de vanguardia como la inflación y la teoría de cuerdas.
¿Cuáles son los métodos de fijación de precios para los subcontratos de proyectos bajo el modelo de contratación general EPC? EPC (Ingeniería, Adquisiciones, Construcción) significa que el contratista general es responsable de todo el proceso de diseño, adquisición, construcción e instalación del proyecto, y es responsable de los servicios de operación de prueba.
Los puntos de conocimiento que los ingenieros de Java deben dominar en cada etapa se presentan en detalle y el conocimiento es completo, espero que pueda ser útil para todos.
Capítulo 2 Representación y operación de datos
Representación de datos y operaciones.
Sistema numérico y codificación.
Conversión entre diferentes números base
Convertir un número decimal en un número base arbitrario
Método de división por base y resto (conversión de parte entera)
Método de redondeo de la base de multiplicación (conversión de parte decimal)
Piense en conjunto con las fórmulas de representación numérica de números de base r en lugar de memorizarlas de memoria.
Código original, código complemento, código inverso, código marco
Representación del código original
El bit de signo de los números positivos está representado por 0, el bit de signo de los números negativos está representado por 1 y el bit de valor permanece sin cambios.
representación complementaria
Dos formas de encontrar el complemento de un número negativo
Método de código complementario: cuando x ≤ 0, el bit de signo es 1, el bit de datos complementario es igual al bit de datos del valor verdadero, que se invierte bit a bit y el último bit se suma en uno. Este método se puede probar mediante. comparar el complemento y las fórmulas del complemento.
Método de escaneo: cuando x ≤ 0, el bit de signo es 1 y los bits de datos del valor verdadero se escanean secuencialmente de derecha a izquierda. El primer 1 de la derecha y el 0 de la derecha permanecen sin cambios y los bits restantes se niegan.
notación en complemento a uno
El bit de signo es el mismo que el código original. Cuando el valor verdadero es un número positivo, el código de complemento es el mismo que el código original; cuando el valor verdadero es un número negativo, el bit de valor del código de complemento es la inversión; del bit de valor verdadero.
notación de desplazamiento de marco
El desplazamiento de fotogramas y el complemento de un valor verdadero difieren sólo en un bit de signo.
rango de representación de números de punto fijo
Métodos aritméticos y circuitos aritméticos.
operador
Unidad Aritmética Lógica (ALU)
ALUop es el terminal de control de operación, que se utiliza para determinar las funciones de procesamiento realizadas por la ALU.
principios internos
Todos los circuitos de operación lógica y aritmética se ejecutan simultáneamente, y se envían múltiples resultados de operación al extremo de entrada del multiplexor respectivamente, y AluOp selecciona una de las salidas de resultado.
La estructura básica del operador.
Operador de estructura de autobús único
Para evitar conflictos de datos, solo se puede transmitir un dato en el bus al mismo tiempo, pero la ALU tiene dos operandos. Por esta razón, es necesario configurar dos registros de búfer, LA y LB, en el extremo de entrada de la ALU.
Se necesitan 3 ciclos de reloj para completar la operación de los dos operandos de registro de propósito general y volver a escribir el resultado.
En el primer ciclo de reloj, el operando del registro general se envía a LA. Se deben dar señales Ri → IB1, IB1 → LA. Cuando llega el activador del reloj, se completa la acción de enviar el operando a LA.
El segundo ciclo de reloj debe completar la operación de enviar otro operando de registro general a LB, y se deben dar las señales Ri→ IB1, IB1 → LB.
El tercer ciclo de reloj requiere la señal de control de selección de operación AluOp y la señal de control de reescritura del registro general IB1 → Ri.
Operador de estructura de bus dual
Para evitar que los resultados de salida de ALU se envíen directamente al bus IB1 y causen conflictos de datos, se configura un registro de búfer L entre la salida de ALU y el bus IB1 para almacenar temporalmente los resultados de la operación.
Se necesitan dos ciclos de reloj para completar la operación.
El primer ciclo de reloj proporciona las señales Ri→ IB1 y Ri→ IB2 para generar los dos operandos de registro respectivamente. Al mismo tiempo, se proporciona la señal de control de operación ALU AluOp para controlar el funcionamiento correcto de los datos. Los resultados de la operación se escribirán automáticamente en el búfer del registro L.
El segundo ciclo de reloj envía los datos en L al bus IB1, dando señales L → IB1, IB1 → Ri, y con la cooperación de la señal de reloj, los datos se escriben nuevamente en el registro general.
Operador de estructura de tres autobuses.
El propósito de la derivación es transferir datos entre registros de propósito general sin pasar por la ALU.
La estructura de tres buses puede proporcionar simultáneamente señales Ri → IB1, Ri → IB2, AluOp, IB3 → Ri y completar la operación con la cooperación de ciclos de reloj. Toda la operación solo requiere un ciclo de reloj.
La velocidad es la más rápida entre las tres estructuras y no requiere registros de búfer, pero su archivo de registro general debe proporcionar dos puertos de lectura y un puerto de escritura.
Operaciones de cambio de punto fijo
desplazamiento aritmético
El objeto del desplazamiento aritmético es un número con signo y el bit de signo permanece sin cambios durante el proceso de desplazamiento.
Desplazar un bit hacia la izquierda equivale a multiplicar por 2 si no se produce desbordamiento.
Desplazar una posición hacia la derecha equivale a dividir entre 2 si no se tiene en cuenta el último dígito que se redondea debido al desplazamiento.
¡El signo de un desplazamiento aritmético siempre permanece sin cambios!
La condición de juicio de desbordamiento de la operación de desplazamiento aritmético es: el desplazamiento aritmético a la izquierda del código original se desplaza en 1, o el desplazamiento aritmético a la izquierda del complemento desplaza el bit con el signo opuesto.
cambio lógico
Los desplazamientos lógicos tratan los operandos como números sin signo.
Reglas de cambio: cuando la lógica se desplaza hacia la izquierda, el bit alto se desplaza y el bit bajo se agrega con 0; cuando la lógica se desplaza hacia la derecha, el bit bajo se desplaza y el bit alto se agrega con 0;
cambio circular
Suma y resta de números de coma fija.
Operaciones de suma y resta en complemento a dos
Agregue n inversores al extremo de entrada Y del sumador original para realizar la función de invertir cada bit, y luego agregue un multiplexor 2 a 1, controlado por un terminal de control Sub, para seleccionar el código original Y que se ingresará al sumador. O invierta cada bit de Y e introdúzcalo en el sumador, y envíe el terminal de control Sub al sumador como un acarreo de bit bajo al mismo tiempo.
Detección de desbordamiento El desbordamiento solo es posible al sumar dos números con el mismo signo.
(1) Detectar en función de si el bit de signo del operando y el resultado de la operación son consistentes.
Se desborda cuando lo positivo se vuelve negativo y lo negativo se vuelve positivo.
(2) Detectar en función de si el transporte del bit de datos más alto y el bit de signo durante la operación son consistentes.
Cuando el acarreo del bit de datos más alto es inconsistente con el acarreo del bit de signo durante la operación, el resultado de la operación se desborda.
(3) Utilice bits de doble signo
El bit de signo más alto representa el signo real.
Ejemplo de desbordamiento de operación en lenguaje C
Operaciones de multiplicación y división de punto fijo
Multiplicación de punto fijo
Multiplicación de un bit del código original
Multiplicación en complemento a uno (algoritmo de Booth)
Operación de división de punto fijo
Operación de división de código original (el método restante no se restaura)
Operación de división en complemento a dos (método alternativo de suma y resta)
Tipos de enteros y conversión de tipos en lenguaje C
Conversión de números con y sin signo
Los valores de los bits se mantienen sin cambios, solo cambia la forma en que se interpretan los bits.
Conversión entre números enteros de diferentes longitudes de palabras
Cuando se fuerza a escribir una variable de longitud de palabra grande en una variable de longitud de palabra pequeña, el sistema trunca directamente los bits altos redundantes y asigna los bits bajos directamente.
Al convertir de una longitud de palabra corta a una longitud de palabra larga, no solo se deben ecualizar los valores de bits correspondientes, sino que también se debe expandir la parte de orden superior.
Si el número original es un entero sin signo, se extiende a cero y las partes de orden superior después de la extensión se rellenan con ceros.
De lo contrario, se realiza la extensión de signo y la parte extendida de orden superior se completa con el bit de signo del número original.
La esencia es la expansión de signos del código complementario.
Almacenamiento y organización de datos.
Almacenamiento de datos "big endian" y "little endian"
El número de máquina de una variable de tipo int i es 01 23 45 67H, su byte más significativo MSB=01H y su byte menos significativo LSB=67H.
Los datos se almacenan de manera "alineada con los límites"
alineación de fronteras
Fronteras no alineadas
No hay problema de alineación de límites para datos de un byte de longitud
Representación y operaciones de números de coma flotante.
Representación de números de coma flotante.
Normalización de números de coma flotante.
Regla de la mano izquierda: Cuando el dígito más alto de la mantisa del resultado de la operación no es un dígito significativo, es decir, en la forma ±0.0…0x…x, se requiere una regla de la mano izquierda. En la regla de la mano izquierda, cada vez que la mantisa se desplaza una posición hacia la izquierda, el código del exponente disminuye en 1 (cuando la base es 2). Es posible que sea necesario realizar la regla de la izquierda varias veces.
Cálculo de la mano derecha: cuando el dígito significativo de la mantisa del resultado de la operación va antes del punto decimal, se requiere el cálculo de la mano derecha. Desplaza la mantisa una posición hacia la derecha y suma 1 al exponente (cuando la base es 2). Cuando necesites ajustar la dirección correcta, solo tendrás que hacerlo una vez.
Estándar IEEE754
IEEE754 suma y resta de números de coma flotante
(1) En el proceso de normalización de la suma del pedido, la operación del código de pedido adopta las reglas de operación de suma y resta del cambio de cuadro.
"Los pequeños pasos deben estar alineados con los grandes pasos"
(2) La operación de mantisa adopta las reglas de operación del código original y los bits ocultos deben participar en la operación de mantisa.
(3) Los bits ocultos participan en el juicio de normalización de mantisa y en el proceso de normalización de mantisa.
Si la mantisa tiene la forma 1......., es una mantisa estandarizada.
Si la mantisa tiene la forma de 1 ×…, debe normalizarse hacia la derecha una vez, es decir, la mantisa se desplaza una posición hacia la derecha y el código de exponente aumenta en 1.
Si la mantisa tiene la forma 0..., debe normalizarla hacia la izquierda, desplazar la mantisa hacia la izquierda y desplazar la mantisa hacia la izquierda 1 bit cada vez, y al mismo tiempo reducir el exponente. por 1, hasta que la mantisa tenga la forma de 1...
(4) Procesamiento de redondeo. Existen principalmente los siguientes métodos de redondeo en IEEE754.
El último bit siempre se establece en 1: siempre que uno de los bits perdidos debido al cambio sea 1, el bit más bajo del resultado de la operación se establece en 1, independientemente de si el bit más bajo era originalmente 0 o 1.
Método de redondeo 0-1: cuando el dígito más alto del dígito que falta es 1, se suma 1 al último dígito de la mantisa, similar al redondeo de números decimales.
Método de truncamiento: intercepte directamente el número requerido de dígitos y descarte todos los dígitos posteriores. Este proceso de redondeo es el más simple.
(5) Juicio de desbordamiento.
El desbordamiento de las operaciones de punto flotante se puede juzgar por el desbordamiento del código exponente. Para los números de punto flotante de precisión simple IEEE754, el desbordamiento de normalización ocurre cuando la normalización hacia la derecha hace que el exponente sea todo 1 (es decir, 11111111, el valor verdadero es 128). El desbordamiento de normalización ocurre cuando la normalización hacia la izquierda hace que el exponente sea todo ceros.
Para operaciones de punto flotante, cuando el exponente se desborda, significa que el resultado de la operación se desborda.
Operaciones que pueden causar desbordamiento
Redondeo de mano derecha y mantisa. Al redondear una mantisa muy grande, es posible que se produzca un desbordamiento de la mantisa debido a que se suma 1 al último dígito. En este caso, es necesario ajustar la mantisa y ordenarla según la regla de la mano derecha. Agregar 1 al orden de la derecha hace que el orden aumente, por lo que es necesario determinar si se ha producido un desbordamiento exponencial.
Gobierno de izquierda. Cuando la regla de la izquierda reduce el orden en 1, el orden disminuye, por lo que es necesario determinar si se ha producido un desbordamiento exponencial. La regla de juicio es similar a la del desbordamiento del índice. Si gira a la izquierda una vez, el código del exponente se reducirá en 1 y luego se juzgará si el código del exponente es todo 0 para determinar si el exponente se desborda.
Desbordamiento de índice y desbordamiento de índice
Si un índice positivo excede el valor máximo permitido (127 o 1023), se produce un desbordamiento del índice y se produce una excepción.
Si un exponente negativo excede el valor mínimo permitido (-126 o -1022), se produce un desbordamiento insuficiente del exponente y el resultado generalmente se trata como cero de la máquina.
Tipo de punto flotante en lenguaje C
Conversión de tipo forzada entre int, float y double
doble→flotar
Puede producirse un desbordamiento al convertir números grandes y puede producirse un redondeo al convertir números de alta precisión.
flotante/doble→int
La parte decimal se redondeará y los números grandes pueden desbordarse al convertirlos.
flotador → doble
Dado que la mantisa y el ancho del exponente de los datos de tipo doble son mayores que los de tipo flotante, su rango de representación es mayor y la precisión es mayor. Los datos de tipo doble convertidos son completamente iguales a los datos de tipo flotante originales.
int → flotante
Ambos tipos son de 32 bits y el número de estados que representan es el mismo. Los datos representados por los dos en el eje numérico no se superponen completamente.
El tipo flotante utiliza parte de su estado para representar números enteros y decimales más grandes. Algunos números enteros relativamente grandes del tipo int no se pueden representar con precisión mediante el tipo flotante.
La mantisa de un número de punto flotante tiene un total de 24 bits, incluidos los bits ocultos. Cuando los 24 ~ 31 bits de los datos int no son 0, no se puede convertir con precisión en la mantisa de un número de punto flotante de 24 bits. tiempo, se producirá un desbordamiento de precisión y se requerirá un procesamiento de redondeo.
int→doble
El campo de mantisa de los números de punto flotante es de 53 bits, que puede representar con precisión todos los números enteros de 32 bits.