it 공부 일기 - 워게임 ctf 풀이 및 언어 강좌모음

& , | 연산자 본문

c

& , | 연산자

kimtong 2021. 1. 11. 16:32

정의 

 

& : 둘다 참이여야지 1

 

| : 둘중에 하나라도 참이면 참

 

대신 이 & 과 | 는 비트 연산자라고하는데 

2진수로 비교를 하면은 더 쉽게 이해된다.

 

예를 들어

1&3 을 할시에 2진수로 표현하면

0000 0001 (1)

0000 0011 (3) 

이렇게 나타나게 된다.

 

& 는 위에 정의했듯이 둘다 참이여야지 1이기떄문에

1 과 3 을 비교하면

0000 0001 이 나오게 된다.

 

왜냐하면 

0001 (1)

0011 (3)

여기 부분만 살펴보면 

1 에서 3번째 자리에는 0 이고

3에서 3번째 자리에는 1 이다.

 

즉 위하고 아래하고 비교를 해서

둘다 1 이면 1이 나오게되고

둘중에 하나라도 0 이 되면은 0이 되는것이다.

 

다른 예시로 말하자면

 

0000 0011 (3)

0000 1100 (12)

3&12 를 한다면

1 과 0 을 비교를 하여도

0011

1100 

이렇게 서로 1이 없기때문에 

결국 둘다 참이 아니므로

0000 0000 (0) 0이 반환이 되는것이다.

 

마지막으로 한번더 예시를 든다면

0000 1001 (9)

0000 1111 (15)

이렇게 되면

1001

1111 에서

첫번쨰 자리와

네번째 자리가 위 아래 서로 둘다 참이기때문에

1001(9) 과 같은 값이 나오게 된다.

 

 

그리고 반면에 | 연산자는

둘중에 하나라도 참이 된다면 1 이 되는것이다.

예를들자면

 

0000 1111

0000 0100 의 결과값은

 

0000 1111 이 나오게 되는것이다.

 

왜냐하면

1111

0100 에서 

 

0이 있어도 위에 하나라도 1 이 있어서

둘중에 하나라도 1 이 있으면 1이 반환 되는것과 같다.

'c' 카테고리의 다른 글

c 언어 프로그래밍 01 - 출력하기  (0) 2020.07.20