C 언어 논리 및 비트 연산자 이해하기
추천 자료: ASP.NET Core 인증 및 권한 부여
논리 및 비트 연산자 이해하기
C 언어에서 논리 연산자와 비트 연산자를 사용하여 복잡한 조건 및 계산을 수행할 수 있습니다. 이 아티클에서는 간단한 예제 코드를 통해 이러한 연산자들의 사용법을 설명하고, 코드의 출력 결과를 예측해 보겠습니다.
소스 코드 분석 및 변형
주어진 코드는 다음과 같은 변수와 연산자를 사용합니다:
코드: logical_and_bitwise_operations.c
#include <stdio.h>
main()
{
int a = 5, b = 4, c = 9, d = 10;
printf("%d\n", a < b || c > d); // 논리 OR 연산
printf("%d\n", (!d - 10) << 2); // 비트 왼쪽 시프트 연산
printf("%d\n", (5 < b) & (c != d)); // 비트 AND 연산
printf("%d\n", c == 9); // 등호 연산
printf("%d\n", ++d >> 3 | 6); // 비트 OR 연산과 비트 오른쪽 시프트 연산
}
코드 출력 결과 예측
논리 OR 연산 (
a < b || c > d
):a < b
는5 < 4
이므로false
(0).c > d
는9 > 10
이므로false
(0).- 둘 중 하나라도 참이면 참:
0 || 0
은0
.
출력:
0
비트 왼쪽 시프트 연산 (
(!d - 10) << 2
):!d
는!10
, 즉0
(논리 NOT 연산).0 - 10
는-10
.-10 << 2
는-10
을 왼쪽으로 2비트 시프트. 2의 보수 표현에서-10
은 대략적으로 32비트 정수로11111111 11111111 11111111 11110110
. 이를 왼쪽으로 2비트 시프트하면11111111 11111111 11111111 11011000
.
출력:
-40
(이진수11011000
의 2의 보수)비트 AND 연산 (
(5 < b) & (c != d)
):5 < b
는5 < 4
이므로false
(0).c != d
는9 != 10
이므로true
(1).- 둘 다 참일 때만 참:
0 & 1
은0
.
출력:
0
등호 연산 (
c == 9
):c
는9
,c == 9
는true
.
출력:
1
비트 OR 연산과 비트 오른쪽 시프트 연산 (
++d >> 3 | 6
):++d
는d
를 먼저 1 증가시켜11
이 됩니다.11 >> 3
은11
을 오른쪽으로 3비트 시프트, 즉1
.1 | 6
은0111
, 즉7
.
출력:
7
추천 자료: .NET Blazor에 대해 알아보시겠어요? .NET Blazor 알아보기를 확인해보세요!