Cómo restar enteros usando un algoritmo

Si habla de programación, la mayoría de los lenguajes ofrecen un operador de resta que puede usar directamente. Solo sujétalo entre dos enteros y estarás dorado.

En la lógica matemática, hay una cosa llamada aritmética de Peano que pretende ser lo más elemental posible en la aritmética cotidiana. Para simplificar demasiado las cosas: comienza por elaborar una lista de números (¡los naturales!), Y luego define [matemáticas] +1 [/ matemáticas] y [matemáticas] -1 [/ matemáticas] como formas de moverse hacia arriba y hacia abajo en esa lista

Con esa configuración *, le daría el siguiente algoritmo para [math] ab [/ math]:

1. Marque [matemáticas] b [/ matemáticas].

  • Si [matemática] b> 0 [/ matemática], haga [matemática] a-1 [/ matemática] y [matemática] b-1 [/ matemática] repetidamente.
  • Si [matemática] b <0 [/ matemática], haga [matemática] a + 1 [/ matemática] y [matemática] b + 1 [/ matemática] repetidamente.
  • Si [matemáticas] b = 0 [/ matemáticas], salte al paso 3.

2. Deténgase cuando [matemáticas] b = 0 [/ matemáticas].

3. El valor actual de [math] a [/ math] es el resultado.

Eso es un algoritmo, y aunque ineficiente, funciona bien.

Quizás te interese lo siguiente:

  • ¿Cómo hacen las computadoras las matemáticas?
  • ¿Cómo funcionan las calculadoras?

* Programar una lista infinita no es realmente factible, pero hay trucos que puedes usar para llenarla sobre la marcha para las necesidades de un usuario.

Al decir “usar algoritmo”, ¿te refieres a “eficientemente”?

La respuesta simple es que ningún lenguaje de programación puede implementar la resta de manera más eficiente que la forma en que una computadora ya realiza esta operación.

La operación de subtrucción se realiza directamente en la ALU (Unidad de lógica aritmética) que reside en la CPU, donde los enteros que se manipulan se representan en lenguaje binario-máquina.

Cualquier comando de cualquier lenguaje de programación se está traduciendo al lenguaje de máquina, y las operaciones básicas como la suma o la resta se traducen directamente en una sola instrucción que le dice a la ALU cómo manipular los dos enteros dados, por lo tanto, cada comando que escriba no será más corto que solo restar.

Ahora, en caso de que realmente quisieras decir ‘algoritmo de resta’, puedo elaborar un posible método. El método de representación de complemento a 2 representa números enteros en binario de una manera que para lograr la negación de ese número entero, uno necesita realizar una negación lógica simple al número entero binario. De esa manera, supongamos que desea realizar XY, se le está ordenando a la ALU que niegue Y y luego realice X +! Y y arroje el resultado. (! Y significa la negación lógica de Y en binario). Otra forma sería! (! X + Y).
En realidad, no hay una sola manera, las diferentes computadoras representan los números binarios de manera diferente (no en el método del complemento a 2) y, por lo tanto, usan diferentes métodos para realizar la resta en la ALU.

Si el método le interesa, le recomiendo leer sobre la representación del complemento a 2.
https://en.m.wikipedia.org/wiki/

Brainfuck: (Suponga que los números se ingresan en la celda 0 y 1)

> [- <->]

C ++:

int a, b;

std :: cin >> a >> b;

std :: cout << ab << endl;

Ook !:

Ook Ook? Ook! Ook? Ook! Ook! Ook? Ook Ook! Ook! Ook Ook? Ook? Ook!

More Interesting

Dado un conjunto entero tal que cada elemento ocurre 3 veces, excepto un elemento, que ocurre solo una vez, ¿cómo encuentro ese único elemento en el espacio O (1) y en la complejidad del tiempo O (n)?

¿Cuál es el tiempo de entrenamiento promedio y el tiempo de prueba de los algoritmos de aprendizaje automático más comunes?

¿Qué es una explicación intuitiva de los algoritmos de gradiente proximal?

¿Cuál es el número esperado de movimientos necesarios para terminar un juego de serpientes y escaleras?

¿Cómo funcionan los algoritmos y la estructura de datos cuando procesamos cualquier solicitud en un sitio web?

Cómo resolver la pregunta en la descripción a continuación

¿Cuáles son las aplicaciones de las búsquedas lineales y binarias?

¿Usar un tipo de inserción de 50 elementos tendrá el mismo tiempo de ejecución que usar un tipo de inserción de 10 elementos 5 veces?

Cómo instalar accesorios de compresión en tubos de plástico

¿Qué tan rápido se puede crear un algoritmo?

¿Cuáles son los diferentes tipos de algoritmos?

¿Cuál es la operación que tiene la constante más pequeña?

¿Es posible tener análisis predictivos utilizando motores de recomendación? En caso afirmativo, ¿cuáles son algunos de los algoritmos de análisis predictivo utilizados por los motores de recomendación?

¿Cuáles son las diferencias entre las estructuras de datos y los algoritmos?

¿Existe un formato estandarizado para representar las funciones de la computadora como algoritmos matemáticos?