22gamin
[Java] bit 연산 본문
- 비트 연산은 2진수 형태의 숫자 0과 1로 할 수 있는 연산.
- 비트연산자를 잘 사용하면 알고리즘을 다양한 방법으로 작성할 수 있을 뿐더러 시간복잡도를 줄여주는 효과를 볼 수 있음
- 우선 순위가 매우 낮기 때문에 계산 시 괄호를 잘 활용해야함!
왼쪽 시프트 (<<)
- 숫자의 모든 비트를 왼쪽으로 이동시키고 오른쪽에 생기는 빈 비트 자리에는 0으로 채움.
- x << y 형식으로 연산자를 사용하면 되고 x의 비트를 왼쪽으로 y칸 이동시킨다는 것을 의미
1111 << 2 = 111100
1111(15) 이 111100(60)으로 바뀜
오른쪽 시프트 (>>)
- 숫자의 모든 비트를 오른쪽으로 이동시킨다. 가장 우측에 있는 수자가 밀려나가면 그냥 버림.
- x >> y 형식으로 연산자를 사용하면 되고 x의 비트를 왼쪽으로 y칸 이동시킨다는 것을 의미.
1111 >> 2 = 11
1111(15)이 11(3)으로 바뀜.
- 왼쪽 시프트는 2의 제곱수로 곱셈과 같은 효과가 있음.
x << 1 -> x*2,
x << 2 -> x*4
- 오른쪽 시프트는 2의 제곱수로 나눗셈과 같은 효과를 가짐.
x >> 2 -> x/2
x >> 2 -> x/4
1. AND 연산자(&)
- 해당 자리에서 둘 다 1인 경우 1을 반환하고, 나머지는 0을 반환함
- 형태: x & y
- 1111 & 1000 = 1000
2. OR 연산자 (|)
- 해당 자리에서 하나라도 1인 경우 1을 반환하고, 둘 다 0인 경우 0을 반환함
- 형태 x | y
- 1111 | 1000 = 1111
3. XOR 연산자 (^)
- 해당 자리에서 서로 다른 경우 1을 반환하고, 같은 경우 0을 반환함
- 형태: x ^ y
- 1111 ^ 1000 = 0111
10진수를 2진수로 변환
- Integer 클래스의 toBinaryString() 메서드를 사용
int decimal = 10;
String binary = Integer.toBinaryString(decimal);
System.out.println(binary); // 출력: 1010
2진수를 10진수로 변환
- Integer 클래스의 parseInt() 메서드를 사용. 이 때, 두 번째 인자로 기수(radix)를 2로 지정함
String binary = "1010";
int decimal = Integer.parseInt(binary, 2);
System.out.println(decimal); //출력: 10
※ 파이썬은 각각 bin(10),int('1010',2)을 사용하면 된다.
'java' 카테고리의 다른 글
[Java] 스코프, 형변환 (0) | 2024.09.09 |
---|---|
[Java] 조건문과 반복문 (0) | 2024.09.09 |
[Java] 연산자 (0) | 2024.09.05 |
[Java] 변수 (5) | 2024.09.05 |
java란? (0) | 2024.01.27 |