La computadora de un solo chip de Qingdao desarrolla un esquema de división de precisión y rapidez en lenguaje C para computadoras de un solo chip

2020-09-04 19:52:20 admin

La computadora Qingdao de un solo chip desarrolla un esquema de división de precisión y rapidez en lenguaje C para computadoras de un solo chip


     La microcomputadora actual de un solo chip 51 generalmente puede usar cálculos de punto flotante en la división de resultados con un punto decimal. Sin embargo, los cálculos de punto flotante tienen una deficiencia que requiere mucho tiempo, que no es adecuada para condiciones de trabajo con requisitos estrictos de tiempo.

    La empresa del autor ha emprendido proyectos como microcomputadora de un solo chip, circuito, fluido electromecánico, control industrial, automatización, programación de software EXE durante mucho tiempo, y recientemente realizó un diseño de una calculadora de un solo chip. En el diseño de la división, la división de enteros largos y las operaciones de resto se pueden utilizar para obtener varios decimales. Los cálculos de precisión de bits se comparten con todos.

Las ideas de diseño son las siguientes:

Suponiendo un divisor entero largo ay un dividendo entero largo b, los pasos son los siguientes:

<1> Obtenga la parte entera de la división, c = a / b;

<2> Sea d a% b, e = 10 * d,

Obtenga el primer lugar decimal de la división, f = e / b;

(Punto clave: multiplique el resto de ayb por 10 veces, y divida por el dividendo b para obtener un lugar decimal después del punto decimal)

<3> Sea g e% b, h = 10 * g,

Obtenga el segundo lugar decimal de la división, i = h / b;

El resultado de la división obtenido por los pasos anteriores es c.fi ...

Por analogía, puede obtener cualquier decimal para la división ...

/ *********** A continuación se adjunta el programa en lenguaje C. Yongke Technology Studio: proporciona soluciones como microcomputadora de un solo chip, placa de circuito, fluido electromecánico, control industrial, controlador, automatización, software, etc.

*********************************************** ******** /

unsigned long result, result_p; // Entero y parte decimal del resultado de la división

// result_p es la parte decimal, por ejemplo, result_p = 12345678, que significa 0.12345678

Void chufa (chushu largo sin firmar, beichushu largo sin firmar, char wei sin firmar)

// wei indica cuántos lugares son precisos hasta el punto decimal

{carácter no firmado i;

     tmp largo sin firmar;

     resultado = resultado_p = 0;

     if (beichushu! = 0) // El dividendo no debe ser 0

        {

         si (wei == 0)

            {result = chushu / beichushu; // Calcula la parte entera

             result_p = 0;

            }

            más

              {result = chushu / beichushu; // Calcula la parte entera

               tmp = chushu% beichushu;

               for (i = 1; i <= wei; i ++) // Calcula la parte decimal

                   {tmp = tmp * 10;

                    result_p = result_p * 10 + tmp / beichushu;

                    tmp = tmp% beichushu;

                   }

              }

        }

}


标签: MCU de Qingdao