>  기사  >  Java  >  Java의 비트 조작

Java의 비트 조작

王林
王林원래의
2024-08-30 15:59:40905검색

일반적으로 프로그래머는 int, float, double, String과 같은 데이터 유형의 변수나 Array, List, ArrayList 등과 같은 컬렉션에 대해 작업합니다. 어떤 경우에는 프로그래머가 데이터를 추출하고 조작하기 위해 바이트 및 비트 수준에서 데이터에 훨씬 더 깊이 들어가야 합니다. Java 및 C#과 같은 언어를 사용하면 비트 수준에서 데이터를 조작할 수 있습니다. 즉, 바이트의 특정 비트에 액세스할 수 있습니다. 이번 주제에서는 Java의 비트 조작(Bit Manipulation)에 대해 알아 보겠습니다.

Java의 비트 조작은 프로그래머가 원본 데이터를 인코딩, 디코딩 또는 압축하기 위해 비트 수준에서 데이터를 추출해야 하는 데이터 압축 및 데이터 암호화 작업을 할 때 종종 필요합니다. 이 기사의 뒷부분에서 보게 될 비트 조작의 다른 많은 응용 프로그램이 있습니다.

무료 소프트웨어 개발 과정 시작

웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등

Java는 비트 수준에서 작업을 수행하기 위해 3비트 시프트와 4개의 비트 연산자를 지원합니다. 이러한 연산자는 정수 유형(int, short, long 및 byte)에 사용되어 비트 수준에서 작업을 수행할 수 있습니다.

Java Bitwise 및 Bitshift 연산자

다음은 연산자입니다:

Operator Description
& Bitwise AND
| Bitwise OR
~ Bitwise Complement
<< Left Shift
>> Right Shift
^ Bitwise XOR
>>> Unsigned Right Shift

Java의 비트 조작 연산자

연산자를 좀 더 자세히 살펴보겠습니다.

1. 비트 OR

이것은 2개의 피연산자를 취하고 “| “. 비트 연산자는 두 피연산자의 해당 비트를 비교합니다. 피연산자 비트 중 하나라도 1이면 출력은 1입니다. 그렇지 않으면 0이 됩니다.

15 = 00001111(바이너리)
27 = 00011011(바이너리)
15와 27의 비트별 OR 연산
00001111
|  00011011
________
00011111  = 31(십진수)

Java 프로그램

public class BitwiseOR {
public static void main(String[] args) {
int operand1 = 15, operand2 = 27, output = operand1 | operand2;
System.out.println(output);
}
}

출력:

Java의 비트 조작

2.비트 AND

이 역시 2개의 피연산자를 사용하고 "&" 기호로 표시되는 비트 연산자입니다. 비트 연산자는 두 피연산자의 해당 비트를 비교합니다. 두 피연산자 비트가 모두 1이면 출력은 1입니다. 그렇지 않으면 0.

15 = 00001111(바이너리)
27 = 00011011(바이너리)
15와 27의 비트 AND 연산
00001111
|  00011011
________
00001011  = 11(십진수)

Java 프로그램

public class BitwiseAND {
public static void main(String[] args) {
int operand1 = 15, operand2 = 27, output = operand1 & operand2;
System.out.println(output);
}
}

출력:

Java의 비트 조작

3. 비트별 보수

지금까지 논의한 다른 두 연산자와 달리 이 연산자는 피연산자를 하나만 사용하며 "~" 기호를 나타냅니다. 이 연산자는 피연산자의 비트를 반전시킵니다. 피연산자 비트가 0이면 이를 1로 변환하고 그 반대로 변환합니다.

15 = 00001111(바이너리)
15의 비트별 보수 연산
~ 00001111
________
11110000  = 240(십진수)

Java 프로그램

public class BitwiseComplement {
public static void main(String[] args) {
int operand= 15, output;
output= ~operand;
System.out.println(output);
}
}

출력:

Java의 비트 조작

참고: Java 프로그램을 실행하면 컴파일러가 해당 숫자의 2의 보수, 즉 이진수의 음수 개념을 표시하므로 240 대신 -16이 출력됩니다.
임의의 숫자에 대한 2의 보수는 -(n+1)과 같습니다. 여기서 n은 2의 보수를 계산할 숫자입니다. 우리의 경우 피연산자 15의 2의 보수는 -16이며, 이는 프로그램의 출력입니다.

4. 비트별 XOR

비트별 XOR은 2개의 피연산자를 취하고 "^" 기호로 표시하는 이항 연산자입니다. 이 연산자는 두 피연산자의 해당 비트가 다른 경우 두 피연산자의 해당 비트를 비교하여 출력으로 1을 제공하고 그렇지 않으면 0을 제공합니다.

비트별 XOR 연산자는 (비트별 OR + 비트별 보수)와 동일합니다

15 = 00001111(바이너리)
27 = 00011011(바이너리)
15와 27의 비트별 XOR 연산
00001111
^ 00011011
________
00010100  = 20(십진수)

Java 프로그램

public class BitwiseXor {
public static void main(String[] args) {
int operand1= 15, operand2 = 27, output;
output = operand1 ^ operand2;
System.out.println(output);
}
}

출력:

Java의 비트 조작

5. 부호 있는 왼쪽 Shift

왼쪽 이동 비트 연산자는 피연산자에 지정된 특정 횟수만큼 비트 패턴을 왼쪽으로 이동합니다. 왼쪽 시프트 연산자는 "<<" 기호로 표시됩니다.

123(바이너리: 01111011)
123 << 1은 246으로 평가됩니다(이진수: 011110110)
123 << 2는 492로 평가됩니다(이진수: 0111101100)
123 << 3은 984로 평가됩니다. (바이너리: 01111011000)

Java 프로그램

public class LeftShiftOperator {
public static void main(String[] args) {
int operand = 123;
System.out.println(operand << 1);
System.out.println(operand << 2);
System.out.println(operand << 3);
}
}

출력:

Java의 비트 조작

6. 부호 있는 오른쪽 시프트

부호 오른쪽 시프트 연산자는 왼쪽 시프트 연산자와 정확히 동일하게 작동하지만 0 비트를 추가하면 상위 위치로 시프트됩니다.

123(바이너리: 01111011)
123>> 1은 61로 평가됩니다(이진수: 00111101)
123>> 2는 30으로 평가됩니다(이진수: 00011110)
123>> 3은 15로 평가됩니다. (바이너리: 00001111)

Java 프로그램

public class RightShiftOperator {
public static void main(String[] args) {
int operand = 123;
System.out.println(operand >> 1);
System.out.println(operand >> 2);
System.out.println(operand >> 3);
}
}

출력:

Java의 비트 조작

7. 부호 없는 오른쪽 Shift

오른쪽 시프트 연산자는 피연산자에 지정된 특정 비트 수만큼 0을 가장 왼쪽 위치로 이동합니다.

Java 프로그램

public class UnSignedRightShiftOperator {
public static void main(String[] args) {
int operand = 123;
System.out.println(operand >>> 1);
System.out.println(operand >>> 2);
System.out.println(operand >>> 3);
}
}

출력:

Java의 비트 조작

결론 – Java의 비트 조작

이제 기사가 끝났으니 이번 기사에서 논의한 핵심 사항을 요약하여 마무리하겠습니다. 우리는 비트 조작이 무엇인지, 그리고 다양한 사용 사례를 살펴보았습니다. 또한 다양한 유형의 비트 연산자(비트 AND, 비트 OR, 비트 보수 및 비트 XOR)와 비트 시프트 연산자(부호 있는 왼쪽 시프트 연산자, 부호 있는 오른쪽 시프트 연산자 및 부호 없는 오른쪽 시프트 연산자)를 예제와 샘플과 함께 배웠습니다. 개별 연산자를 설명하는 Java 프로그램

위 내용은 Java의 비트 조작의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.