Notice
«   2025/05   »
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 30 31
Tags
more
Archives
Today
Total
관리 메뉴

22gamin

[Java] bit 연산 본문

java

[Java] bit 연산

22gamin 2024. 9. 5. 11:46

- 비트 연산은 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