일반적으로 프로그래머는 int, float, double, String과 같은 데이터 유형의 변수나 Array, List, ArrayList 등과 같은 컬렉션에 대해 작업합니다. 어떤 경우에는 프로그래머가 데이터를 추출하고 조작하기 위해 바이트 및 비트 수준에서 데이터에 훨씬 더 깊이 들어가야 합니다. Java 및 C#과 같은 언어를 사용하면 비트 수준에서 데이터를 조작할 수 있습니다. 즉, 바이트의 특정 비트에 액세스할 수 있습니다. 이번 주제에서는 Java의 비트 조작(Bit Manipulation)에 대해 알아 보겠습니다.
Java의 비트 조작은 프로그래머가 원본 데이터를 인코딩, 디코딩 또는 압축하기 위해 비트 수준에서 데이터를 추출해야 하는 데이터 압축 및 데이터 암호화 작업을 할 때 종종 필요합니다. 이 기사의 뒷부분에서 보게 될 비트 조작의 다른 많은 응용 프로그램이 있습니다.
무료 소프트웨어 개발 과정 시작
웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등
Java는 비트 수준에서 작업을 수행하기 위해 3비트 시프트와 4개의 비트 연산자를 지원합니다. 이러한 연산자는 정수 유형(int, short, long 및 byte)에 사용되어 비트 수준에서 작업을 수행할 수 있습니다.
다음은 연산자입니다:
Operator | Description |
& | Bitwise AND |
| | Bitwise OR |
~ | Bitwise Complement |
<< | Left Shift |
>> | Right Shift |
^ | Bitwise XOR |
>>> | Unsigned Right Shift |
연산자를 좀 더 자세히 살펴보겠습니다.
이것은 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); } }
출력:
이 역시 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); } }
출력:
지금까지 논의한 다른 두 연산자와 달리 이 연산자는 피연산자를 하나만 사용하며 "~" 기호를 나타냅니다. 이 연산자는 피연산자의 비트를 반전시킵니다. 피연산자 비트가 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); } }
출력:
비트별 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); } }
출력:
왼쪽 이동 비트 연산자는 피연산자에 지정된 특정 횟수만큼 비트 패턴을 왼쪽으로 이동합니다. 왼쪽 시프트 연산자는 "<<" 기호로 표시됩니다.
예
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); } }
출력:
부호 오른쪽 시프트 연산자는 왼쪽 시프트 연산자와 정확히 동일하게 작동하지만 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); } }
출력:
오른쪽 시프트 연산자는 피연산자에 지정된 특정 비트 수만큼 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); } }
출력:
이제 기사가 끝났으니 이번 기사에서 논의한 핵심 사항을 요약하여 마무리하겠습니다. 우리는 비트 조작이 무엇인지, 그리고 다양한 사용 사례를 살펴보았습니다. 또한 다양한 유형의 비트 연산자(비트 AND, 비트 OR, 비트 보수 및 비트 XOR)와 비트 시프트 연산자(부호 있는 왼쪽 시프트 연산자, 부호 있는 오른쪽 시프트 연산자 및 부호 없는 오른쪽 시프트 연산자)를 예제와 샘플과 함께 배웠습니다. 개별 연산자를 설명하는 Java 프로그램
위 내용은 Java의 비트 조작의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!