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 |