자바 비트 조작 총화
3146 단어 자바
비트 연산 은 메모리 에 있 는 바 이 너 리 데 이 터 를 직접 조작 하 는 것 이기 때문에 데 이 터 를 처리 하 는 속도 가 매우 빠르다.
프 리 젠 테 이 션 에 편리 합 니 다. 먼저 바 이 너 리 인쇄 방법 을 쓰 십시오.
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));
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.