2012년 9월 8일 토요일

비트 연산자의 종류

이번 포스트에서는 비트 연산자들에 대해 알아보겠습니다.

& : 비트 단위로 AND(그리고) 연산을 한다.
ex) tender & tender2
 AND연산은 두 이진수의 자릿수가 1로 공통일경우 연산값은 1로중복되는 자릿수가 연산값이 됩니다.

쉽게 풀면 중1수학 집합 아시죠?

집합에서 교집합이라고 여기시면 되겠습니다.

그리고 이게 왜 and연산이냐면 그리고는 둘다 포함된다는 뜻이 있죠?

그래서 두 2진수의 자릿수가 똑같은것을 연상하시면 이해하기 쉬울겁니다.

| : 비트 단위로 or(또는) 연산을 한다.
ex) tender | tender2

OR연산은 둘 중 하나라는 말뜻이 있죠?

말 그대로 두 2진수중 하나라도 1이면 그 자릿수는 1이라는 겁니다.


^: 비트 단위로 XOR 연산을 한다.
ex) tender ^ tender2

이 연산은 보통 2진수의 계산이라 보시면 되겠습니다.

말 그대로 그냥 자릿수가 올라가지 않는 덧셈이라고 보시면 되겠습니다.


~ : 1을 0으로 0을 1로 바꿔주는 NOT 연산자입니다.
ex) ~tender

정말 쉬운 연산자입니다.
 다들 음의 정수를 2진수로 어떻게 표현하시는지는 아시죠?

모르신다면 간단하게 표현하겠습니다.

00000000 00000000 00000000 00000001 = 1
11111111 11111111 11111111 11111111 = -1
차이를 아시겠나요?

잘 모르시겠다면 다른 예를 가지겠습니다.

00000000 00000000 00000000 00000010 = 2
11111111 11111111 11111111 11111110 = -2

약간 눈치가 들어오시나요?

차이는 1과 0입니다.

한 2진수에 1의 보수를 취한 수에 1을 더한값이 -의 값이 되는 겁니다.

예를 들어봅시다.

000000101( = 5)

↓1의 보수를 취한다

111111010 

↓이 값에 1을 더한다.(1=00000001)

111111011 = -1

아까 2와 -2 1과 -1에 이 방법을 쓰시면 원하는 답을 얻으실 수 있을 겁니다.
자 길던 부가 설명은 건너가고 다음 연산자로 넘어갑니다.

<< : 이 연산자는 비트 열을 움직이는 기능을 가지고 있습니다.
ex) tender<<1 //비트 열을 왼쪽으로 1칸 옮긴다.

한마디로 00000001을 00000010로 바꿔준다는 겁니다. 값은 2


>> : 오른쪽으로 비트열을 옮겨주는 기능을 하는 연산자입니다.
ex) tender>>1 //비트열을 오른쪽으로 1칸 옮긴다.

여기까지 잘 따라오셨나요?
생각보다 그렇게 어렵진 않았습니다.(기본이라서 그런가요 ㅜ)
아무튼 시간이 너무 걸린 포스트였습니다.
여기서 마치겠습니다.

댓글 없음:

댓글 쓰기