※ 공부 내용의 복습 개념으로 정리된 글입니다. - 출처 시나공
산술 연산자
산술 연산자는 가, 감, 승, 제 등의 산술 계산에 사용되는 연산자를 말합니다.
- 산술 연산자에는 일반 산술식과 달리 한 변수의 값을 증가하거나 감소시키는 증감연산자가 있습니다.
관계 연산자
관계 연산자는 두 수의 관계를 비교하여 참(true) 또는 거짓(false)을 결과로 얻는 연산자입니다.
- 거짓은 0, 참은 1로 사용되지만 0외의 모든 숫자도 참으로 간주됩니다.
관계 연산자는 왼쪽을 기준으로 '왼쪽이 크다', '왼족이 크거나 같다'로 해석하면 됩니다.
비트 연산자
비트 연산자는 비트별(0, 1)로 연산하여 결과를 얻는 연산자입니다.
문제
다음 비트 연산식의 결과를 적으시오(단 정수형 변수 a = 5, b = 7으로 선언되었다고 가정합니다.)
1. &(비트 and)는 두 비트가 모두 1일 때만 1이 되는 비트 연산자입니다.
C언어에서 정수형 변수는 4바이트(32비트)이므로 각 변수의 값을 4바이트 이진수로 변환한 다음 비트별로 연산합니다.
0000 0000 0000 0000 0000 0000 0000 0101은 십진수로 5입니다.
2. |(비트 or)는 두 비트 중 한 비트라도 1이면 1이 되는 비트 연산자입니다.
0000 0000 0000 0000 0000 0000 0000 0111은 십진수로 7입니다.
3. ^(비트 xor)는 두 비트가 모두 같으면 0, 서로 다르면 1이 되는 연산자입니다.
0000 0000 0000 0000 0000 0000 0000 0010은 십진수로 2입니다.
4. ~(비트 not)는 각 비트의 부정을 만드는 연산자입니다.
부호화 2의 보수법을 사용하는 C언어나 JAVA에서는 맨 왼쪽의 비트는 부호 비트로, 0이면 양수이고 1이면 음수입니다.
원래의 값을 알기 위해서는 · · ·1111 1000에 대한 2의 보수를 구합니다. · · ·1111 1000은 십진수로 8이고 원래 음수였으므로 -를 뿥이면 -8입니다.
5. >>는 오른쪽 시프트 연산자이므로, a에 저장된 값을 오른쪽으로 1비트 이동시킨 다음 그 값을 a에 저장시킵니다.
int는 4바이트이므로 4바이트 이진수로 변환하여 계산하면 됩니다.
- 4바이트에 5를 이진수로 표현하면 다음과 같습니다.
- 부호를 제외한 전체 비트를 오른쪽으로 1비트 이동시킵니다. 부호는 맨 왼쪽의 0이고, 양수에 대한 패딩 비트에는 0이 들어옵니다.
- 이것을 10진수로 변환하면 2입니다.
6. <<는 왼쪽 시프트 연산자이므로, b에 저장된 값을 왼쪽으로 3비트 이동시킨 다음 그 값을 다시 b에 저장시킵니다.
정수형 변수는 4비트이므로 이진수로 변환하여 계산하면 됩니다.
- 4바이트에 7을 이진수로 표현하면 다음과 같습니다.
- 부호를 제외한 전체 비트를 왼쪽으로 3비트 이동시킵니다. 부호는 맨 왼쪽의 0입니다. 양수이므로 빈 자리패딩 비트에는 0이 들어오면 됩니다.
이것을 10진수로 변환하면 56(32 + 16 + 8) 입니다.
※ 패딩 비트
Shilt에서 자리를 이동한 후 생기는 왼쪽이나 오른쪽 끝의 빈 자리에 채워지는 비트를 말합니다.
C언어와 JAVA는 모두 부호화 2의 보수법을 사용하기 때문에 부호화 2의 보수법의 음수에 대한 패딩 비트만 알아두면 됩니다.
양수는 항상 빈 자리에 0이 채워지기 때문에 신경쓰지 않아도 됩니다.
- 양수
- Shilt Left, Shilt Right 모두 0이 채워집니다.
- 음수
- Shilt Left : 왼쪽으로 이동하므로 오른쪽의 빈 자리에는 0이 채워집니다.
- Shilt Right : 오른쪽으로 이동 하므로 맨 왼쪽의 부호 비트를 제외한 빈 자리에는 1이 채워집니다.
논리 연산자
논리 연산자는 두 개의 논리 값을 연산하여 참(true) 또는 거짓(false)을 결과로 얻는 연산자입니다.
관계 연산자와 마찬가지로 거짓은 0, 참은 1입니다.
대입 연산자
연산 후 결과를 대입하는 연산식을 간략하게 입력할 수 있도록 대입 연산자를 제공합니다.
대입 연산자는 산술, 관계, 비트, 논리 연산자에 모두 적용할 수 있습니다.
조건 연산자
조건 연산자는 조건에 따라 서로 다른 수식을 수행합니다.
형식
조건 ? 수식1 : 수식2; '조건'의 수식이 참이면 '수식1'을, 거짓이면 '수식2'를 실행합니다. |
문제
다음 조건 연산식의 결과를 적으시오(단 정수형 변수 a = 1, b = 2, c = 3, d = 4와 같이 선언되었다고 가정합니다.)
1. d %= c < d ? c++ : d++;
2. d /= d % 3 ? a * b : d % c;
풀이
1번 문제
① : c는 3이고 d는 4이므로 조건 (c < d)이 참이 되어 c++의 결과인 3이 사용됩니다.
② : d = d % 3 = 4 % 3
2번 문제
① : d는 4이므로 'd % 3'은 1이 됩니다. 조건에서 1은 참과 같으므로 'a * b'의 결과인 2가 사용됩니다.
② : d = d / 2 = 4 / 2
기타 연산자
연산자 우선순위
- 한 개의 수식에 여러 개의 연산자가 사용되면 기본적으로 아래 표의 순서대로 처리됩니다.
- 아래 표의 한 줄에 가로로 나열된 연산자는 우선순위가 같기 때문에 결합규칙에 따라 ←는 오른쪽에 있는 연산자부터, →는 왼쪽에 있는 연산자부터 차례로 계산됩니다.
'정보처리산업기사' 카테고리의 다른 글
정보처리산업기사 - 프로그래밍 언어 활용 - 제어문 (0) | 2024.08.14 |
---|---|
정보처리산업기사 - 프로그래밍 언어 활용 - 데이터 입 · 출력 (0) | 2024.08.13 |
정보처리산업기사 - 프로그래밍 언어 활용 - 변수 (0) | 2024.08.11 |
정보처리산업기사 - 프로그래밍 언어 활용 - 데이터 타입 (0) | 2024.08.09 |
정보처리산업기사 - 정보 시스템 기반 기술 용어 - 네트워크 관련 신기술 (0) | 2024.08.06 |