비트 연산 자의 용도
3388 단어 비트 연산
비트 연산 은 이 진수 에 대해 연산 하 는 것 이다.
자바 의 비트 연산 자 는 [&, |, ^, ~, <, >, >> >] 가 있 습 니 다. 그 중에서 [~] 는 1 원 연산 자 이 고 나머지 는 2 원 연산 자 이 며, 2 원 연산 자 는 해당 하 는 할당 연산 연산 연산 연산 연산 연산 연산 연산 자 [& =, | =, ^ =, > =, >> =, < =] 가 있 습 니 다.
자바 에서 비트 연산 의 조작 수 는 정형, 불 형, 문자 형 만 가능 합 니 다.점용 한 바이트 수 에 따라 작은 것 부터 큰 것 까지 각각 boolean, byte, char, short, int, long 이다.
용도.
용도 중 하나: 계산
연산 자 이 니 가장 중요 한 기능 은 당연히 연산 이다.비트 연산 자 를 사용 하여 연산 을 하면 우리 에 게 놀 라 운 편 의 를 가 져 다 줄 때 가 많다.
예 를 들 어 왼쪽으로 한 자 리 를 옮 기 는 것 은 2 로 나 누 는 것 과 같다.오른쪽으로 한 명 을 옮 기 는 것 은 나 누 기 2 에 해당 한다.
용도 2: flag
비트 연산 자 는 모두 이 진수 에 대해 연산 을 하기 때문에 우 리 는 이 점 을 이용 하여 다양한 상황 을 구분 하 는 flag 로 도 할 수 있다.
다음 코드 는 간단 한 예제 응용 이다.자바 파일 에 있어 서 다음 과 같은 몇 가지 modifier 가 있 습 니 다. [Public, package, proctected, private, static, abstract, final] 등등.이러한 modifier 중 일 부 는 동시에 존재 할 수 있 는 (예 를 들 어 Public 와 static) 이 고, 일 부 는 서로 배척 하 는 것 이다. 즉, 하나의 (예 를 들 어 Public 와 private) 만 나타 날 수 있다.
그러면 우 리 는 이러한 modifier 를 분류 할 수 있 습 니 다. 분류 하 는 방법 은 각각 바 이 너 리 를 차지 하 게 하 는 것 입 니 다.다음 코드 에서 Public 는 낮은 첫 번 째 바 이 너 리 를 차지 하고 private 는 낮은 네 번 째 바 이 너 리 를 차지 합 니 다.이러한 분류 방법 을 사용 하면 우 리 는 어떤 modifier 가 포함 되 어 있 는 지 여 부 를 쉽게 판단 할 수 있 고 일련의 modifier 가 포함 되 어 있 는 지 여 부 를 판단 할 수 있다.다음 코드 의 isPublic (int) 와 hasModifier (int) 와 같 습 니 다.
이러한 용법 은 권한 관리 시스템 에 도 사용 할 수 있다. 왜냐하면 권한 시스템 도 이런 유사 한 부분 을 동시에 가 질 수 있 고 일 부 는 반드시 서로 배척 하 는 수요 가 있어 야 하기 때문이다.
package bit;
public class ModifierBase {
public static int PUBLIC = 0x0001;
public static int PACKAGE = 0x0002;
public static int PROTECTED = 0x0004;
public static int PRIVATE = 0x0008;
public static int STATIC = 0x0010;
public static int ABSTRACT = 0x0020;
public static int FINAL = 0x0040;
private int modifier = 0;
public ModifierBase(int modifier) {
this.modifier = modifier;
}
public boolean isPublic() {
return (this.modifier & PUBLIC) != 0;
}
public boolean isPackage() {
return (this.modifier & PACKAGE) != 0;
}
public boolean isProtected() {
return (this.modifier & PROTECTED) != 0;
}
public boolean isPrivate() {
return (this.modifier & PRIVATE) != 0;
}
public boolean hasModifier(int modifier) {
return (this.modifier & modifier) == modifier;
}
public boolean hasnotModifier(int modifier) {
return (this.modifier & modifier) == 0;
}
public static void main(String[] args) {
int modifiers1 = PUBLIC | PROTECTED;
int modifiers2 = PUBLIC | PROTECTED | PRIVATE;
ModifierBase base = new ModifierBase(modifiers2); // base is [PUBLIC | PROTECTED | PRIVATE]
System.out.println(base.hasModifier(modifiers1)); // true because base includes [PUBLIC | PROTECTED]
ModifierBase base2 = new ModifierBase(modifiers1); // base is [PUBLIC | PROTECTED]
System.out.println(base2.hasModifier(modifiers2)); // fasle because base2 donot includes [PRIVATE]
}
}
원문 인용http://blog.csdn.net/superbeck/article/details/5387476
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
noip 아날로그 문제 소기 2 by hzwer [DP] [경로 압축] [분류 토론] [비트 연산]관건은 문제의 특징을 깊이 파헤치는 거예요.분류 토론(많은 문제에서 많은 가지를 잘라낼 수 있다. 최대 수익은.데이터 범위: 20%의 데이터 n=1, m<=10^5는 40%의 데이터 n<=15, m<=10^5는 60...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.