Operaciones Matemáticas en Solidez

Solidity es un lenguaje de programación completamente nuevo creado por Ethereum , que es el segundo mercado más grande de criptomonedas por capitalización, lanzado en el año 2015 dirigido por Christian Reitwiessner. Ethereum es una plataforma de código abierto descentralizada basada en el dominio blockchain, que se utiliza para ejecutar contratos inteligentes, es decir, aplicaciones que ejecutan el programa exactamente como se programó sin posibilidad de fraude, interferencia de terceros, censura o tiempo de inactividad.

Los contratos inteligentes son códigos de programa de alto nivel que se compilan en el código de bytes EVM y se implementan en la string de bloques de Ethereum para su posterior ejecución. Nos permite realizar transacciones creíbles sin ninguna interferencia de terceros, estas transacciones son rastreables e irreversibles. Las operaciones matemáticas en solidez son tan simples como las usamos en la vida real. Existen las siguientes Operaciones Matemáticas en Solidez:

  1. Suma (x + y)
  2. Resta: (x – y)
  3. Multiplicación (x * y)
  4. División (x / y)
  5. Módulo (x % y) 
  6. Exponencial (x**y)

En este artículo, discutiremos estas operaciones en detalle con ejemplos.

Suma

La operación de suma consiste en sumar los dos números y generar una suma.

Ejemplo: En el siguiente ejemplo, se crea un contrato con dos funciones para establecer los valores de las dos variables y una tercera función para sumar las dos variables y devolver la suma.

Solidity

// Solidity program to
// demonstrate addition
pragma solidity 0.6.6;
contract gfgMathPlus
{
    // Declaring the state
    // variables
    uint firstNo ;
    uint secondNo ;
 
    // Defining the function
    // to set the value of the
    // first variable
    function firstNoSet(uint x) public
    {
        firstNo = x;
    }
 
    // Defining the function
    // to set the value of the
    // second variable
    function secondNoSet(uint y) public
    {
        secondNo = y;
    }
 
    // Defining the function
    // to add the two variables
    function add() view public returns (uint)
    {
        uint Sum = firstNo + secondNo ;
         
        // Sum of two variables
        return Sum;
    }
}

Producción:

Addition

Sustracción

La operación de resta consiste en restar los dos números y generar una diferencia. En Resta, podríamos haber usado cualquier valor de Entero (int16 a int256) pero todos los operandos deben ser del mismo tipo de datos (Enteros de los mismos bits).

Ejemplo: En el siguiente ejemplo, se crea un contrato con una función para demostrar la resta de dos números. 

Solidity

// Solidity program to
// demonstrate the subtraction
pragma solidity 0.6.6;
contract gfgSubract
{
    // Initializing the
    // state variables
    int16 firstNo=2 ;
    int16 secondNo=10;
     
    // Defining a function
    // to subtract two numbers
    function Sub() view public returns (int16)
    {
        int16 ans = firstNo - secondNo ;
         
        // Difference amount
        return ans;
    }
 
}

Producción:

Subtraction

Multiplicación

La operación de multiplicación trata de generar un valor de producto al multiplicar dos o más números.

Ejemplo: en el siguiente ejemplo, se crea un contrato con tres funciones, donde las dos primeras funciones son responsables de establecer los valores de las variables, y la tercera función genera un valor de producto al multiplicar las dos primeras variables. 

Solidity

pragma solidity 0.6.6;
 
contract gfgMultiply {
 
    int128 firstNo ;
    int128 secondNo ;
     
    function firstNoSet(int128 x) public {
        firstNo = x;
    }
     
    function secondNoSet(int128 y) public {
        secondNo = y;
    }
     
    function multiply() view public returns (int128) {
        int128 answer = firstNo * secondNo ;
        return answer;
    }
 
}

Producción:

Multiplication

División

La operación de división devuelve el cociente del resultado de la división.

Ejemplo: en el siguiente ejemplo, se crea un contrato con tres funciones, donde las dos primeras funciones son responsables de establecer los valores de las variables, y la tercera función genera un valor de cociente al dividir el segundo número por el primer número.

Solidity

// Solidity program to
// demonstrate the
// division operation
pragma solidity 0.6.6;
 
// Creating a contract
contract gfgDivide
{
    // Declaring the
    // state variables
    int128 firstNo ;
    int128 secondNo ;
     
    // Defining a function
    // to set the value of
    // the first variable
    function firstNoSet(int64 x) public
    {
        firstNo = x;
    }
     
    // Defining function
    // to set the value of
    // the second variable
    function secondNoSet(int64 y) public
    {
        secondNo = y;
    }
     
    // Defining function to
    // return the result
    function Divide() view public returns (int128)
    {
        int128 answer = firstNo / secondNo ;
        return answer;
    }
}

Nota: 

  1. Podemos ver que dividimos dos enteros de 64 bits y almacenamos con éxito el resultado en un entero de 128 bits.
  2. Esto solo es posible en el caso de la operación de multiplicación y división.

Producción:

Division

módulo o resto

Esta operación devuelve el resto del resultado del proceso de división de dos números.

Ejemplo: en el siguiente ejemplo, se crea un contrato con tres funciones, donde las dos primeras funciones son responsables de establecer los valores de las variables, y la tercera función genera un valor restante al dividir el segundo número por el primer número. En la operación de módulo, todas las variables deben ser números enteros de la misma longitud de bits. 

Solidity

// Solidity program to
// demonstrate the
// Modulus operation
pragma solidity ^0.6.6;
 
// Creating a contract
contract gfgModulo
{
    // Declaring state variables
    uint firstNo ;
    uint secondNo ;
     
    // Defining a function
    // to set the value of
    // the first variable
    function firstNoSet(uint x) public
    {
        firstNo = x;
    }
     
    // Defining a function
    // to set the value of
    // the second variable
    function secondNoSet(uint y) public
    {
        secondNo = y;
    }
     
    // Defining a function to return
    // the modulus value
    function Modulo() view public returns (uint)
    {
        uint answer = firstNo % secondNo ;
        return answer;
    }
}

Producción:

Modulo

exponenciación

La operación de exponenciación solo funciona en los enteros sin signo donde los enteros sin signo de bits inferiores se pueden calcular y almacenar en un entero sin signo de bits superior.

Solidity

// Solidity program to
// demonstrate the
// exponentiation operation
pragma solidity ^0.6.6;
 
// Creating a contract
contract gfgExpo
{
    // Declaring the state
    // variables
    uint16 firstNo ;
    uint16 secondNo ;
 
    // Defining the first function
    // to set the value of
    // first variable
    function firstNoSet(uint16 x) public
    {
        firstNo = x;
    }
     
    // Defining the function
    // to set the value of
    // the second variable
    function secondNoSet(uint16 y) public
    {
        secondNo = y;
    }
     
    // Defining the function to
    // calculate the exponent
    function Expo() view public returns (uint256) {
        uint256 answer = firstNo ** secondNo ;
        return answer;
    }
}

Producción:

Exponentiation

Nota:

  1. En Suma, Resta y Módulo todos los operandos deben ser del mismo tamaño Entero.
  2. En división y multiplicación, la respuesta calculada se puede almacenar en enteros de bits mayores, pero los operandos deben ser enteros del mismo tamaño.
  3. En la función de exponenciación, los operandos deben ser enteros sin signo. Los bits inferiores Los enteros sin signo se pueden calcular y almacenar en un entero superior pero sin signo.
  4. Debe establecer el mismo tipo de datos de todos los operandos para aplicarles una operación matemática, de lo contrario no se ejecutarán.
     

Publicación traducida automáticamente

Artículo escrito por chetangarg1905 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *