자바 비트 조작 총화

3146 단어 자바
컴퓨터 에 있 는 모든 데 이 터 는 2 진법 으로 저장 된다.
비트 연산 은 메모리 에 있 는 바 이 너 리 데 이 터 를 직접 조작 하 는 것 이기 때문에 데 이 터 를 처리 하 는 속도 가 매우 빠르다.
프 리 젠 테 이 션 에 편리 합 니 다. 먼저 바 이 너 리 인쇄 방법 을 쓰 십시오.
private static void printNum(int n){

	String num = Integer.toBinaryString(n);

	if(num.length() == 32){

		System.out.println(num);

	}else{

		StringBuilder sb = new StringBuilder("");

		for(int i =0;i < 32 - num.length(); i ++){

		sb.append("0");

		}

		System.out.println(sb.toString() + num);

	}

}


1. ~ 연산 자 (반대), 바 이 너 리 에 대응 하여 반대, 0 이 1 이 되 고 1 이 0 이 됩 니 다.
int num = 3;

printNum(num);

printNum(~num);


 결 과 는 다음 과 같다.
0000000000000000000000000000001111111111111111111111111111111100
 
2. & 연산 자 (와) 는 바 이 너 리 에 대응 하여 조작 하고 모두 1 일 때 1 이 되 고 다른 것 은 0 이 됩 니 다.
int num1 = 3;

int num2 = 7;

printNum(num1);

printNum(num2);

printNum(num1 & num2);


 
결 과 는 다음 과 같다.
000000000000000000000000000000110000000000000000000000000000011100000000000000000000000000000011
 
3. | 연산 자 (또는) 는 바 이 너 리 에 대응 하여 진행 하거나 조작 하 며, 모두 0 일 때 0 이 되 고, 기타 1 이 됩 니 다.
int num1 = 4;

int num2 = 7;

printNum(num1);

printNum(num2);

printNum(num1 | num2);


 
결 과 는 다음 과 같다.
000000000000000000000000000001000000000000000000000000000000011100000000000000000000000000000111
 
4. ^ 연산 자 (이 또는) 는 바 이 너 리 위상 에 대응 하 는 동시에 이 자 리 는 0 이 되 고 그렇지 않 으 면 1 이 됩 니 다.
int num1 = 5;

int num2 = 9;

printNum(num1);

printNum(num2);

printNum(num1 ^ num2);


 
결 과 는 다음 과 같다.
000000000000000000000000000001010000000000000000000000000000100100000000000000000000000000001100
 
5 、 < 조작 (왼쪽 이동), 바 이 너 리 위치 왼쪽으로 이동, 오른쪽 충전 0
int num1 = 5;

printNum(num1);

printNum(num1 << 2);


 결 과 는 다음 과 같다.
0000000000000000000000000000010100000000000000000000000000010100
6 、 > > 동작 (오른쪽으로 이동), 바 이 너 리 는 오른쪽으로 이동 하고 왼쪽 은 0 을 채 웁 니 다.
int num1 = 5;

printNum(num1);

printNum(num1 >> 2);


 결 과 는 다음 과 같다.
0000000000000000000000000000010100000000000000000000000000000001
비트 조작 흔 한 응용
1. 중간 변 수 를 사용 하지 않 고 두 개의 수 를 교환 합 니 다.
int num1 = 2;

int num2 = 5;

num1 = num1^num2;

num2 = num2^num1;

num1 = num1^num2;

System.out.println("num1:" + num1 +"
"+ "num2:" + num2 );

 2. 구 2 의 N 차방
// 2 32  :

System.out.println(Math.pow(2, 32));

System.out.println(1L<<32);


 
3. 홀수 짝수 판단
int num1 = 4;

int num2 = 9;

if(num1%2 == 0){

	System.out.println("  ");

}else{

	System.out.println("  ");

}

System.out.println((((int)num1&1) == 1) ? "  " : "  ");

System.out.println((((int)num2&1) == 1) ? "  " : "  ");


 4. 절대 치 구하 기
int num = -3;

System.out.println(Math.abs(num));

int i = num >> 31;  

System.out.println(i == 0 ? num : (~num + 1));


좋은 웹페이지 즐겨찾기