drexqq
[Java, 자바] 연산자 - 비트연산자 본문
Java의 비트 연산자에 대해 알아보자.
비트 연산자는 말 그대로 비트 연산을 위한 연산자이다.
비트 연산 : 비트 연산은 한 개 혹은 두 개의 이진수에 대해 비트 단위로 적용되는 연산.
이진수에 대해 계산이 필요할 때 사용하면 될 것 같다.
비트 연산자는 &, |, ^, <<, >>, ~ 총 6종류가 있다.
전 게시글에 있는 논리 연산자와 비슷하게 생긴 것도 있고 그렇지 않은 것도 있다. 논리 연산자 보기
&(AND)
반갑게도 논리 연산자와 같다.
&&(AND)는 비교되는 두 값이 true일 때만 true값을 반환한다.
(0 & 0) -> 0
(1 & 0) -> 0
(0 & 1) -> 0
(1 & 1) -> 1
|(OR)
이 녀석도 같다.
||(OR)는 비교되는 두 값이 중 하나만 true여도 true값을 반환한다.
(0 | 0) -> 0
(1 | 0) -> 1
(0 | 1) -> 1
(1 | 1) -> 1
^(XOR)
처음 보는 녀석이 나왔다.
^(XOR)은 비교되는 두 값이 다를 때만 true를 반환한다.
암호화와 복호화에 많이 쓰인다고 한다.
(0 ^ 0) -> 0
(1 ^ 0) -> 1
(0 ^ 1) -> 1
(1 ^ 1) -> 0
<<(Left Shift) , >>(Right Shift)
<<(Left Shift)는 말 그대로 값을 왼쪽으로 밀어준다.
>>(Right Shift)는 말그대로 값을 오른쪽으로 밀어준다.
나도 처음 듣고 무슨 소린지 몰랐다.
예를 들어서 우리가 흔히 사용하는 아라비아 숫자인 십진수 2를 이진수로 바꿔 보면
0010 이러한 형태가 된다
그 후 <<를 사용하여 연산하게 되면,
0010 << 1 = 0100 이러한 값이 이렇게 나오게 된다.
이런 식으로 계산이 되어서 이진수 0100이 나오게 된다.
이진수 0100을 다시 >>를 사용해서 연산해보자
0100 >> 2 = 0001;
<<와 반대로 >>를 사용하니 이진수의 값이 오른쪽으로 가는 게 보인다.
이해가 되었다면 좋겠다. 난 됐다.
~(틸트)
나온 값을 모두 반대로 뒤집어 버린다.
이 녀석도 처음 들었을 때 무슨 소린지 전혀 몰랐다.
예를 들어보자
십진수 8을 이진수로 바꾸게 된다면
1000 이란 이진수를 얻을 수 있을 것이다. ( 이진수 계산하는 건 나중에 써보도록 하겠다.)
여기서 ~ 이 친구가 앞에 붙게 된다면 무슨 일이 벌어질까?
~1000 = 0001
짜잔 이렇게 모든 값들을 뒤집어 버린다.
또 다른 예시를 봐도 마찬가지다
십진수 15를 이진수로 바꾸면 1111이 된다.
여기서 ~이 친구가 앞에 붙게 된다면
~1111 = 0000
이렇게 값이 바뀌게 된다.
'Back-End > Java' 카테고리의 다른 글
[Java, 자바] 배열(Array) (0) | 2020.05.21 |
---|---|
[Java, 자바] 캐스팅(Casting) (0) | 2020.05.20 |
[Java, 자바] 연산자 - 논리연산자, 비교연산자, 삼항연산자 (0) | 2020.05.20 |
[Java,자바] 연산자 - 산술연산자 (0) | 2020.05.20 |
[Java,자바] 변수 (0) | 2020.05.19 |