◻️ DAY-06
챕터 | 비트 연산자 |
---|---|
3-2 | 비트 연산자 |
Quiz | 연습문제풀이 |
◻️ 비트 연산자란?
- 비트 단위의 연산을 하는 경우는
암호화
작업처럼 임의의 숫자를 만들거나, 어떤 변수의 특정 비트를 꺼내보는(마스킹; masking) 경우에 사용 - 하드웨어에 내장되는 임베디드 시스템 프로그램에서 메모리 용량이 부족하거나 계산이 복잡할 때 연산 속도를 빠르게 하기 위해 사용할 수 있다
Java
에서는 프로그램에서 특정 값을 만들거나 연산할 때비트연산자
를 사용한다
비트 논리 연산자
비트
단위로&
,|
,^
,~
연산이 이루어진다.
& 연산자
&(AND)
연산자는 두 개의 비트 값이 모두 1인 경우에만 연산 결과값이 1이 된다(논리곱과 비슷)
1
2
3
int num1 = 5; // 2진수 변환: 00000101
int num2 = 10; // 2진수 변환: 00001010
int result = num1 & num2; // num1,num2를 2진수로 변환한 뒤 각 바이트값을 비교하여 결과값을 출력한다= 00000000
l 연산자
|(OR)
연산자는 두 개의 비트 값 중 하나라도 1인 경우에는 연산 결과값이 1이 된다(논리합과 비슷)
^ 연산자
^(XOR)
연산자는 같은 값이면 0, 다른 값이면 1의 결과값을 가진다
~ 연산자
~(반전)
연산자는 0은 1로, 1은 0으로 바꾸는 연산자이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/*
* Date: 2021-05-12
* Author: Yon
* Project: [자바 초보탈출 30일]
* Section: 06일차
* Subject: "비트연산자 &, ^, |, ~"
*/
// 비트연산자 연습해보기
package section_03.bit_operator;
public class bit_operator1_1 {
public static void main(String[] args) {
int num1 = 5; // 2진수 변환값: 00000101
int num2 = 10; // 2진수 변환값: 00001010
int result = num1 & num2; // &: 둘 다 1일 경우에만 1 출력
int result2 = num1 | num2; // |: 둘 중 하나라도 1이면 1 출력
int result3 = num1 ^ num2; // ^: 같은 값이면 0, 다른 값이면 1
int result4 = ~num2; // ~: 0은 1로, 1은 0으로
System.out.println(result); // &
System.out.println(result2); // |
System.out.println(result3); // ^
System.out.println(result4); // ~
}
}
비트 이동 연산자
비트 이동 연산자
는<<
,>>
,>>>
3가지가 있다- 이를
시프트(Shift)
연산자라고도 부른다
<<
연산자
- « 시프트 연산자는 왼쪽으로 비트를 이동하는 연산자이다
1
2
int num = 5; // 2진수 변환: 00000101
num << 2; // 왼쪽으로 2 비트이동: 00010100
>>
연산자
- » 시프트 연산자는 오른쪽으로 비트를 이동하는 연산자이다
1
2
int num = 5; // 2진수 변환: 00000101
num << 2; // 오른쪽으로 2 비트이동: 00000001
>>>
연산자
- » 시프트 연산자는 오른쪽으로 비트를 이동하는 연산자이다.
- 왼쪽에 채워지는 비트 값이 부호 비트와 상관없이 무조건 0 이된다.
연산자 우선순위
단항 연산자
의 우선순위가 가장 높고,이항
,삼항
연산자 순이다대입 연산자
의 우선순위가 가장 낮다산술
,관계
,논리
,대입
연산자 순서로 우선순위를 가지며( )
의 우선순위가 가장 높다