Grunt's personal blog

this is my personal blog for my hacking stuff, my degree stuff, etc

View on GitHub

Apuntes sobre Operadores Aritméticos en C

Introducción a los Operadores Aritméticos

Con un entendimiento básico de los tipos enteros en C, podemos explorar cómo estos tipos de variables se manipulan mediante operadores aritméticos. Estos operadores permiten realizar operaciones matemáticas como suma, resta, multiplicación, división y módulo. A continuación, se detalla cada operador con ejemplos.


Suma

El operador de suma es el más común y se representa con el símbolo +. Permite sumar dos valores enteros.

Ejemplo

unsigned int op1 = 1;
unsigned int op2 = 3;
unsigned int result = op1 + op2; // result = 4

En este ejemplo, se suman las variables op1 y op2, y el resultado se almacena en la variable result.


Resta

El operador de resta se representa con el símbolo -. Resta el valor de una variable de otra.

Ejemplo

unsigned int op1 = 5;
unsigned int op2 = 3;
unsigned int result = op1 - op2; // result = 2

Aquí, el valor de op2 se resta de op1, y el resultado se guarda en result.


Multiplicación

El operador de multiplicación se representa con el símbolo *. Multiplica dos valores enteros.

Ejemplo

unsigned int op1 = 0x100; // 256 en decimal
unsigned int op2 = 2;
unsigned int result = op1 * op2; // result = 512

En este caso, se multiplica op1 por op2, y el resultado se almacena en result.


División

El operador de división se representa con el símbolo /. Divide un valor entero por otro.

Ejemplo

unsigned int op1 = 0x100; // 256 en decimal
unsigned int op2 = 2;
unsigned int result = op1 / op2; // result = 128

Aquí, op1 se divide entre op2, y el resultado se guarda en result.

Nota: Dividir por cero es una operación inválida y, en sistemas como Linux, genera una señal SIGFPE (error/excepción).


Módulo

El operador de módulo se representa con el símbolo % y calcula el resto de una división entre dos números.

Ejemplo

unsigned int op1 = 0x100; // 256 en decimal
unsigned int op2 = 2;
unsigned int result = op1 % op2; // result = 0

El módulo es útil para limitar un número dentro de un rango específico. Por ejemplo, el siguiente código asegura que no se acceda fuera de los límites de un arreglo:

int numbers[16] = {};
for (int i = 0; i < 100; i++) {
    numbers[i % 16] += 1; // Incrementa el elemento correspondiente
}

En este caso, el operador % garantiza que el índice i se mantenga dentro del rango de 0 a 15, recorriendo el arreglo numbers varias veces sin desbordar sus límites.


Conclusión

Los operadores aritméticos en C (+, -, *, /, %) son herramientas esenciales para manipular tipos enteros. Comprender su funcionamiento, incluyendo casos especiales como la división por cero o el uso del módulo para controlar rangos, es fundamental en la programación de bajo nivel, especialmente en contextos como la explotación de binarios.