반응형
▶비트연산자
- 피연산자가 boolean 타입일 경우 일반 논리 연산자
- 피연산자가 정수타입일 경우 비트 논리 연산자로 사용
- 정수타입만 피연산자가 될 수 있고, 실수타입은 피연산자가 될 수 없다.
- 정수타입을 가지고 같은 자릿수 비트로 연산
- 0 : false, 1 : true
1)비트 논리곱 연산(&)
- 같은 자릿수 비트가 1과 1인 경우만 1, 나머지 0
int num1 = 5;
int num2 = 7;
int result = num1 & num2;
System.out.println(result);
num1 = 3;
result = num1 & num2;
System.out.println(result);
2)비트 논리합 연산(|)
- 같은 자릿수 비트가 하나라도 1이면 1, 전부 0이면 0
result = num1 | num2;
System.out.println(result);
num1 = 4;
num2 = 5;
result = num1 | num2;
System.out.println(result);
3)비트 논리부정(~)
- 0은 1로 1은 0으로 반전
int num3 = 7;
result = ~num3;
System.out.println(result);
▼
결과는 -8
00000111 7일때 2진수 값이
11111000 이렇게 변경됨
음수의 경우 0인 숫자를 계산해서 숫자 나옴
맨앞자리 1이니까 -(음수)로 변경
2의 2승 + 2의 1승 + 2의 0승 = -7
양수는 0부터 시작하기 때문에 1 빼고 -8
4)비트 배타적 논리합(^)
- 비트가 같으면 0, 다르면 1
num1 = 5;
num2 = 7;
result = num1 ^ num2;
System.out.println(result);
▶비트 이동 연산자
1) <<
- 왼쪽으로 비트를 이동하는 연산자
- 값 << 칸수
: 값의 비트에서 칸수만큼 왼쪽으로 이동 후 새로 생긴 오른쪽 칸에 0을 채움
num1 = 5;
result = num1 << 3;
System.out.println(result); // 40
2) >>
-비트를 오른쪽으로 이동
-새로 생긴 왼쪽칸 부호부 값으로 채움. 음수의 경우 맨앞의 1이 채워짐
num1 = -1;
result = num1 >> 2;
System.out.println(result); // -1
3) >>>
-비트를 오른쪽으로 이동
-새로 생긴 왼쪽칸 0으로 채움(음수의 경우도 마찬가지로 0)
num1 = -1;
result = num1 >>> 2;
System.out.println(result); // 1073741823
반응형
'Java' 카테고리의 다른 글
[Java] if, else, else if, 중첩 if (3) | 2024.07.23 |
---|---|
[Java] 대입연산자, 삼항연산자(조건연산자) (0) | 2024.07.22 |
[Java] 논리연산자 (0) | 2024.07.22 |
[Java] 산술연산자, 증감연산자, 비교연산자 (0) | 2024.07.21 |
[Java] 변수와 타입 (0) | 2024.07.20 |