JAVA 비트연산자
비트연산자
- 10진수를 2진수로 변환
//1. 숫자를 2진수 String으로 반환
String x = Integer.toBinaryString(33);
System.out.println(" x : " + x); // x : 100001
/*
8진수는 toOctalString
16진수는 toHexString
*/
//2. 2진수 string을 10진수 숫자로 반환
int y = Integer.valueOf(x, 2);
System.out.println(" y : " + y); // y : 33
/*
8진수는 Integer.valueOf(x, 8);
16진수는 Integer.valueOf(x, 16);
*/
- 비트 연산식
연산식 | |
---|---|
~x |
정수 x의 비트값을 0을 1로 1을 0으로 반전시켜 반환 |
x&y |
정수 x와 y의 비트값을 비교해서 같은 자리의 비트가 모두 1일때 1을 반환 |
x^y |
정수 x와 y의 비트값을 비교해서 같은 자리의 비트가 다를때 1을 반환 |
x<<y |
정수 x의 각 비트를(이진값) y만큼 왼쪽으로 이동 (빈자리 0으로 채움) |
x>>y |
정수 x의 각 비트를(이진값) y만큼 오른쪽으로 이동 |
x>>>y |
정수 x의 각 비트를(이진값) y만큼 오른쪽으로 이동 (빈자리 0으로 채움) |
- 예시
int x = 9;
int y = 3;
System.out.println(" x to BinaryString : " + Integer.toBinaryString(x)); //1001
System.out.println(" y to BinaryString : " + Integer.toBinaryString(y)); // 11
System.out.println(" ~x : " + (~x)); // -10
System.out.println(" ~x to BinaryString : " + Integer.toBinaryString(~x)); //11111111111111111111111111110110
System.out.println(" x&y : " + (x&y)); // 1
System.out.println(" x&y to BinaryString : " + Integer.toBinaryString(x&y)); // 1
System.out.println(" x^y : " + (x^y)); //10
System.out.println(" x^y to BinaryString : " + Integer.toBinaryString(x^y)); //1010
System.out.println(" x<<y : " + (x<<y)); //72
System.out.println(" x<<y to BinaryString : " + Integer.toBinaryString(x<<y)); //1001000
System.out.println(" x>>y : " + (x>>y)); //1
System.out.println(" x>>y to BinaryString : " + Integer.toBinaryString(x>>y)); // 1
System.out.println(" x>>>y : " + (x>>>y)); //1
System.out.println(" x>>>y to BinaryString : " + Integer.toBinaryString(x>>>y)); // 1