티스토리 뷰
이번 강좌가 비트 연산자를 끝내는 강좌와 동시에 연산자를 끝내는 강좌일 듯 합니다.
잘 따라와 주세요!
비트 연산자란? 비트 단위로 연산하는 연산자입니다.
비트는 뭘까요?
"정보량의 최소 기본 단위. 1비트는 이진수 체계(0, 1)의 한 자리로, 8비트는 1바이트이다."
네이버 국어사전 결과입니다.
여기서 비트 연산자를 사용하려면 무조건 피 연산자가 정수여야 합니다.
실수를 가지고 비트 연산을 하는 게 의미도 없고, 실수는 값의 표현 체제가 정수랑 완전 다르기 때문입니다.
아무튼 비트 연산자에 대해 살펴보겠습니다.
연산자 기호 |
연산자 기능 |
결합 방향 |
& |
비트단위로 &(AND)연산을 합니다 |
→ |
| |
비트단위로 |(OR)연산을 합니다 |
→ |
^ |
비트단위로 ^(XOR)연산을 합니다 |
→ |
~ |
피 연산자의 모든 비트를 반전시켜 나온 결과를 정수로 묶어 반환합니다 |
← |
이런 연산자로 비트 연산을 하게 됩니다.
어디서 많이 본 연산자 아닌가요? 논리 연산자의 기호와 비슷합니다.
비트 연산자는 비트 단위로 연산을 하며 연산 된 결과를 묶어서 하나의 정수로 계산한 다음 결과를 반환하게 됩니다.
그럼 하나하나 특징을 살펴보도록 하겠습니다.
&연산자는 &&연산자와 비슷합니다.
두 피 연산자(정수)의 비트를 비교하여 비트가 모두 1일 때만 1을 반환하는 연산자 입니다.
위 그림을 보시면 이해가 쉬우실겁니다.
이렇게 피 연산자의 비트를 비교해서 모두 1일때만 1을 반환하게 됩니다.
|연산자는 ||연산자와 비슷한데요.
둘 중 하나만 1이 있어도 1을 반환합니다.
이렇게 말이죠.
하나라도 1이 있으면 1을 반환하게 되지요.
^연산자는 두 비트가 다를 경우 1을 반환합니다.
이렇게 두 비트가 모두 다를때만 1을 반환하는 연산자 입니다.
마지막으로 ~연산자는 모든 비트를 반전 시킵니다.
이렇게 1은 빨간 선처럼 0으로, 0은 노란 선처럼 1로 반전 시키는 연산자 입니다.
이렇게 해서 비트 연산자에 대한 설명은 마쳤습니다.
이제 비트 쉬프트 연산자에 대해 알아보겠습니다.
여기서 쉬프트란 키보드의 (Shift)와 같은 단어입니다. ㅋㅋ
이 연산자도 비트 연산자와 같이 피 연산자가 모두 정수여야 합니다.
연산자 기호 |
연산자 기능 |
<< |
피 연산자의 비트열을 왼쪽(←)으로 이동 이동에 따른 빈공간은 0으로 체움 |
>> |
피 연산자의 비트열을 오른쪽(→)으로 이동 이동에 따른 빈공간은 양수일경우 0으로, 음수일경우 1으로 체움 |
>>> |
피 연산자의 비트열을 오른쪽(→)으로 이동 이동에 따른 빈공간을 모두 0으로 체움 |
그럼 예제를 통해 살펴보겠습니다.
System.out.println(2 << 1); //4출력
System.out.println(2 << 2); //8출력
System.out.println(2 << 3); //16출력
System.out.println(4 >> 1); //2출력
System.out.println(4 >> 2); //1출력
실행 결과를 보게 되면(주석 참조) << 연산자의 실행 결과 2의 비트가 1칸씩 왼쪽으로 이동해서 2의 n배가 되는 모습을 볼 수 있습니다.
또한 >> 연산자의 실행 결과로 4의 비트가 1칸씩 오른쪽으로 이동해서 2의 n승으로 나눠지는 모습을 확인할 수 있습니다.
그러므로 비트가 왼쪽으로 n칸씩 가게 되면 그 정수에 2의 n승을 곱한 것과 마찬가지며
비트가 오른쪽으로 n칸씩 가게 되면 그 정수에 2의 n승으로 나눈 것과 마찬가지란 뜻이 됩니다.
그러므로 2배, 3배한 결과를 얻을 수 있습니다.
여기서 >>>연산자는 부호를 결정하는 MSB를 0으로 지워버릴 수 있기 때문에 음수에 >>>연산자를 사용하게 되면 전혀 다른 값이 나올 수 있으니 주의하세요.
이렇게 비트 연산자에 대한 설명이 끝났습니다.
연산자 부분은 소스 예)로 확인하지 않고 설명만 해도 된다고 생각했기 때문에 예제 소스의 양이 적을겁니다.
(전혀 귀찮아서가 아닙니다.)
다음 강의부터는 if ~ else등 프로그램의 실행 흐름을 제어하는 명령어를 배우게 됩니다.
저도 이제 책을 보며 좀 더 배워나가야 하고 이해가 점점 어려워 지기 때문에 강의의 흐름을 잡기 위해 노력하겠습니다.
그러므로 조금 시간이 걸릴 수 있으며 예제를 많이 사용하여 저도 이해하고 여러분도 이해할 수 있도록 글을 써보겠습니다. ㅎㅎ
그럼 이번 비트 연산자 강좌와 연산자 전체를 마치겠습니다.
'Programming > Java' 카테고리의 다른 글
반복문에서 부가적인 역할을 하는 continue와 break (5) | 2013.03.02 |
---|---|
반복문을 끝내볼까? while, for, do~while (0) | 2013.03.01 |
Switch와 break는 어떻게 사용할 수 있을까? (0) | 2013.03.01 |
if~else, 만약 ~이라면 ~을 실행하라 (2) | 2013.02.27 |
비트 연산자, 연산자의 끝을 달려가보자 (0) | 2013.02.23 |
단항 연산자는 이항연산자와 무슨 차이가 있지? (0) | 2013.02.23 |
계산을 할수 있는 연산자에 대해 알아보자! - 2편 (0) | 2013.02.22 |
계산을 할 수 있는 연산자에 대해 알아보자! - 1편 (0) | 2013.02.22 |
자료형은 언제든지 변환될 수 있습니다 (0) | 2013.02.22 |
- [C] printf로 *(별) 피라미드 출력하기
- [자료구조] #1 재귀호출
- Code Server에서, C/C++ 확장 플러그인 충돌 문제 해결법
- 집에서 혼자 통기타 헤드머신 구멍 넓히기
- XPEnology Nas (헤놀로지 나스) 구축기
- UTM iOS Virtual Machines 앱으로 iPad에 윈도우, 맥 설치하기
- iPad Pro로 프로그래밍하기
- Windows Hello로 인한 원격 데스크톱(RDP) 로그인 불가 문제
- 윈도우 태블릿에 Android-x86 설치 후기
- pre 태그만 있는 과거 게시글도 Highlight.js 적용하기
- 감사합니다. 덕분에 잘 해결했습니다.
- ㅠㅠㅠ 여러 분들께서 달아주신 댓글까지 참고해보시고 해결법을 직접 찾아보셔⋯
- 코시4극변환케이블 구매해서 끼워봣는데도 안되네요 ㅜㅠㅜ 안되는건가요 ㅜㅠ⋯
- 아이패드에 3가지 선 모두 coms로 구매했는데 구매한거에서는 잘못된게 없는거⋯
- 말씀하신 것만으로는 젠더 불량인지 패드에서 인식만 못하는 것인지 판단이 안⋯
- 말씀해주신대로 했는데 녹음인출? 이 안되네요 ㅜㅠ 젠더 문제 인가봐요 제가⋯
- 3번에 이어폰 연결하신 후 3번을 아이패드와 다시 뺏다 꼈다 해보세요.
- 3번 케이블의 헤드셋 부분에 아무 이어폰이나 연결해주세요. 를 보고 여분⋯
- ㅜㅠ 선생님 선생님이 올려주신 coms에서 파는 3가지 젠더를 모두 사서 해봤는⋯
- 제가 letex으로 책, 논문을 써본적이 없어서 잘 모르겠습니다...!
- Total
- 2,070,477
- Today
- 433
- Yesterday
- 640
- String Name = Mir(itmir913);
- String Mail = itmir913@gmail.com;
- String github = https://github.com/itmir913;