solidity 06. 연산자 (Operators)

BlockChain,NFT,Web3.0/Solidity 2022. 1. 15. 01:54
반응형

연산자란?
4 + 5는 9와 같은 간단한 식을 보자. 여기서 4와 5는 피연산자, '+'는 연산자라고 한다. 

Solidity는 다음과 같은 유형의 연산자를 지원한다 

산술 연산자
비교 연산자
논리적(또는 관계형) 연산자
할당 연산자
조건부(또는 삼항) 연산자

 

산술 연산자
수학적 연산을 수행하는 데 사용된다 

OperatorDenotationDescription

Addition + 두 개의 피연산자를 추가하는 데 사용됩니다.
Subtraction 첫 번째 피연산자에서 두 번째 피연산자를 빼는 데 사용
Multiplication * 두 피연산자를 곱하는 데 사용
Division / 분자를 분모로 나누는 데 사용
Modulus % 정수 분할 이후의 나머지를 제공
Increment ++ 정수 값을 1씩 늘림 
Decrement 정수 값을 1씩 줄임 
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.7;
// Creating a contract
contract SolidityTest {
 
     // Initializing variables
    uint16 public a = 20;
    uint16 public b = 10;
 
    // Initializing a variable
    // with sum
    uint public sum = a + b;
 
    // Initializing a variable
    // with the difference
    uint public diff = a - b;
 
    // Initializing a variable
    // with product
    uint public mul = a * b;
 
    // Initializing a variable
    // with quotient
    uint public div = a / b;
 
    // Initializing a variable
    // with modulus
    uint public mod = a % b;
 
    // Initializing a variable
    // decrement value
    uint public dec = --b;
 
    // Initializing a variable
    // with increment value
    uint public inc = ++a;
     
}

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.7;
// Creating a contract
contract SolidityTest {
 
    uint data;

    function sum (uint a, uint b) public pure returns (uint){
        return a + b;
    }
}

 


Comparison Operators

Equal == 두 값이 같은지 여부를 확인하고, 같으면 true를 반환하고 그렇지 않으면 false를 반환
Not Equal != 두 값이 같은지 여부를 확인하고 같지 않으면 true를 반환하며 그렇지 않으면 true반환
Greater than > 왼쪽 값이 오른쪽보다 큰지 여부를 확인하고 크면 true를 반환하고 그렇지 않으면 false
Less than < 왼쪽 값이 오른쪽보다 작은지 확인하고, 작으면 true를 반환하고 그렇지 않으면 false
Greater than or Equal to >= 왼쪽 값이 오른쪽보다 크고 같은지 여부를 확인하고, 크거나 같으면 true를 반환하고 그렇지 않으면 false 반환 
Less than or Equal to <= 왼쪽 값이 오른쪽보다 작은지 확인하고, 작거나 같으면 true를 반환하고 그렇지 않으면
false 반환 
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.7;
// Creating a contract
contract SolidityTest {
 
    uint data = 100;

    function isEqual (uint x) public view returns (bool) {
        return data == x;
    }
}

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.7;
// Creating a contract
contract SolidityTest {
 
    // Declaring variables
    uint16 public a = 20;
    uint16 public b = 10;
 
    // Initializing a variable
    // with bool equal result
    bool public eq = a == b;
 
    // Initializing a variable
    // with bool not equal result
    bool public noteq = a != b;
    
    // Initializing a variable
    // with bool greater than result
    bool public gtr = a > b;
 
    // Initializing a variable
    // with bool less than result
    bool public les = a < b;
 
    // Initializing a variable
    // with bool greater than equal to result
    bool public gtreq = a >= b;
 
    // Initializing a variable
    // bool less than equal to result
    bool public leseq = a <= b;
     
}

 


 

 

Logical Operators

이러한 연산자는 둘 이상의 조건을 결합하는 데 사용됩니다. 

Logical AND && 두 조건이 모두 참이면 true를 반환하고 하나 또는 둘 다 거짓이면 false를 반환
Logical OR || 하나 또는 두 조건 모두 참이면 true를 반환하고 둘 다 거짓이면 false를 반환
Logical NOT ! true를 false로 false 를 true로 반환
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.7;
// Creating a contract
contract SolidityTest {
 
     // Defining function to demonstrate
     // Logical operator
     function Logic(bool a, bool b) public pure returns(bool, bool, bool) {
         
       // Logical AND operator 
       bool and = a&&b;
        
       // Logical OR operator 
       bool or = a||b;
        
       // Logical NOT operator
       bool not = !a;
       return (and, or, not);
    }
     
}


 

 

Bitwise Operators

이러한 연산자는 비트 수준 연산을 수행하는 데 사용되는 비트 수준에서 작동

산술 연산자를 지원한다.

Bitwise AND & 정수 인수의 각 비트에 대해 부울 AND 연산을 수행
BitWise OR | 정수 인수의 각 비트에 대해 부울 OR 연산을 수행
Bitwise XOR ^ 정수 인수의 각 비트에 대해 부울 배타적 OR 연산을 수행
Bitwise Not ~ 정수 인수의 각 비트에 대해 부울 NOT 연산을 수행
Left Shift << 첫 번째 피연산자의 모든 비트를 두 번째 피연산자에 의해 지정된 위치 수만큼 왼쪽으로 이동
Right Shift >> 첫 번째 피연산자의 모든 비트를 두 번째 피연산자에 의해 지정된 위치 수만큼 오른쪽으로 이동
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.7;
// Creating a contract
contract SolidityTest {
 
      // Declaring variables
    uint16 public a = 20;
    uint16 public b = 10;
 
    // Initializing a variable
    // to '&' value
    uint16 public and = a & b;
 
    // Initializing a variable
    // to '|' value
    uint16 public or = a | b;
 
    // Initializing a variable
    // to '^' value
    uint16 public xor = a ^ b;
 
    // Initializing a variable
    // to '<<' value
    uint16 public leftshift = a << b;
 
    // Initializing a variable
    // to '>>' value
    uint16 public rightshift = a >> b;
   
    // Initializing a variable
    // to '~' value
    uint16 public not = ~a ;
     
}


Assignment Operator

이 연산자는 변수에 값을 할당하기 위한 것

왼쪽의 피연산자는 가변적인 반면 오른쪽의 피연산자는 값

산술 연산자를 지원

 

OperatorDenotationDescription

Simple Assignment  = 단순히 오른쪽에 있는 값을 왼쪽에 있는 피연산자에 할당
Add Assignment += 오른쪽의 피연산자를 왼쪽의 피연산자에 추가하고 값을 왼쪽 피연산자에 할당
Subtract Assignment -= 왼쪽 피연산자에서 오른쪽 피연산자를 빼서 왼쪽 피연산자에 값을 할당
Multiply Assignment *= 피연산자를 모두 곱하고 왼쪽 피연산자에 값을 할당
Divide Assignment /= 왼쪽의 피연산자를 오른쪽의 피연산자로 나누고 값을 왼쪽 피연산자에 할당
Modulus Assignment %= 왼쪽의 피연산자를 오른쪽의 피연산자로 나누고 나머지를 왼쪽 피연산자에 할당
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.7;
// Creating a contract
contract SolidityTest {
 
    // Declaring variables
        uint16 public assignment = 20;
        uint public assignment_add = 50;
        uint public assign_sub = 50;
        uint public assign_mul = 10;
        uint public assign_div = 50;
        uint public assign_mod = 32;
     
        // Defining function to
        // demonstrate Assignment Operator
        function getResult() public{
           assignment_add += 10;
           assign_sub -= 20;
           assign_mul *= 10;
           assign_div /= 10;
           assign_mod %= 20;
           return ;
        }
     
}

 

 


참고

https://www.tutorialspoint.com/solidity/solidity_operators.htm

https://www.geeksforgeeks.org/solidity-operators/?ref=lbp 

 

반응형

'BlockChain,NFT,Web3.0 > Solidity' 카테고리의 다른 글

solidity 08. 선택문 (조건문)  (0) 2022.01.15
solidity 07. 반복문 (Loop)  (0) 2022.01.15
solidity 05. 변수 스코프  (0) 2022.01.15
solidity 04. 변수 및 데이터 타입  (0) 2022.01.15
solidity 02. 기본 문법  (0) 2022.01.15
: