C 언어 논리 및 비트 연산자 이해하기
논리 및 비트 연산자 이해하기
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
추천 자료: ASP.NET Core 인증 및 권한 부여
추천 자료: .NET Blazor에 대해 알아보시겠어요? .NET Blazor 알아보기를 확인해보세요!