비트연산자

 

  • 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