logo

Java의 비트 연산자

자바에서는 운영자 지정된 작업을 수행하는 기호입니다. 이 섹션에서는 다음 항목에 대해서만 설명합니다. 비트 연산자와 그 유형 적절한 예를 들어요.

비트 연산자의 유형

Java에는 6가지 유형의 비트 연산자가 있습니다.

  • 비트별 AND
  • 비트별 배타적 OR
  • 비트 단위 포함 OR
  • 비트별 칭찬
  • 비트 시프트 연산자
연산자 상징 용도
비트별 AND & op1 & op2
비트별 배타적 OR ^ op1 ^ op2
비트 단위 포함 OR | 작전1 | op2
비트별 칭찬 ~ ~ op
비트 왼쪽 시프트 << op1 << op2
비트 오른쪽 시프트 >> op1 >> op2
부호 없는 오른쪽 시프트 연산자 >>> 에 >>> 이동할 자리 수

비트 연산자에 대해 자세히 설명하겠습니다.

비트 AND(&)

기호로 표시되는 이항 연산자입니다. & . 두 비트가 모두 1인 경우에만 1을 반환하고, 그렇지 않으면 0을 반환합니다.

Java의 비트 연산자

Java 프로그램에서 비트 AND 연산자를 사용해 보겠습니다.

데이터 독립성을 설명하다

BitwiseAndExample.java

 public class BitwiseAndExample { public static void main(String[] args) { int x = 9, y = 8; // bitwise and // 1001 &amp; 1000 = 1000 = 8 System.out.println(&apos;x &amp; y = &apos; + (x &amp; y)); } } 

산출

 x &amp; y = 8 

비트 배타적 OR(^)

기호로 표시되는 이항 연산자입니다. ^ (캐럿으로 발음). 두 비트가 동일하면 0을 반환하고, 그렇지 않으면 1을 반환합니다.

Java의 비트 연산자

Java 프로그램에서 비트 배타적 OR 연산자를 사용해 보겠습니다.

BitwiseXorExample.java

 public class BitwiseXorExample { public static void main(String[] args) { int x = 9, y = 8; // bitwise XOR // 1001 ^ 1000 = 0001 = 1 System.out.println(&apos;x ^ y = &apos; + (x ^ y)); } } 

산출

 x ^ y = 1 

비트 포함 OR(|)

기호로 표시되는 이항 연산자입니다. | (파이프라고 발음합니다). 비트 중 하나라도 1이면 1을 반환하고, 그렇지 않으면 0을 반환합니다.

Java의 비트 연산자

Java 프로그램에서 비트 포함 OR 연산자를 사용해 보겠습니다.

BitwiseInclusiveOrExample.java

 public class BitwiseInclusiveOrExample { public static void main(String[] args) y = &apos; + (x } 

산출

 x | y = 9 

비트 단위 보수(~)

기호로 표시되는 단항 연산자입니다. ~ (물결표로 발음). 비트의 역수 또는 보수를 반환합니다. 0은 1로, 1은 0으로 만듭니다.

q1 q2 q3 q4
Java의 비트 연산자

Java 프로그램에서 비트 보수 연산자를 사용해 보겠습니다.

BitwiseComplimentExample.java

 public class BitwiseComplimentExample { public static void main(String[] args) { int x = 2; // bitwise compliment // ~0010= 1101 = -3 System.out.println(&apos;~x = &apos; + (~x)); } } 

산출

 ~x = -3 

비트 시프트 연산자

시프트 연산자는 비트를 오른쪽이나 왼쪽으로 이동하는 데 사용됩니다. 숫자를 2로 나누거나 곱하면 시프트 연산자를 사용할 수 있습니다. 비트를 시프트하는 일반적인 형식은 다음과 같습니다.

 variable &lt;&gt; number of places to shift; 

예를 들어 a=10인 경우

 a&gt;&gt;2; //shifts two bits a&gt;&gt;4; //shifts 4 bits 

Java는 다음 유형의 시프트 연산자를 제공합니다.

  • 부호 있는 오른쪽 시프트 연산자 또는 비트 단위 오른쪽 시프트 연산자
  • 부호 없는 오른쪽 시프트 연산자
  • 부호 있는 왼쪽 시프트 연산자 또는 비트 왼쪽 시프트 연산자

참고: Java는 부호 없는 왼쪽 시프트 연산자(<<)를 지원하지 않습니다.<).< h4>

부호 있는 오른쪽 시프트 연산자(>>)

부호 있는 오른쪽 이동 연산자는 숫자의 비트 패턴을 다음 방향으로 이동합니다. 오른쪽 지정된 위치 수로 0을 채웁니다. 연산자는 기호로 표시됩니다. >>. 또한 가장 왼쪽 비트(부호 비트)도 유지합니다. 만약에 0 가장 왼쪽 비트에 표시됩니다. 이는 숫자가 긍정적인 . 만약에 1 가장 왼쪽 비트에 표시됩니다. 이는 숫자가 부정적인 .

일반적으로 a>>n이라고 쓰면 숫자의 비트를 지정된 위치(n)를 기준으로 오른쪽으로 이동한다는 의미입니다. 수학적인 측면에서 부호 있는 오른쪽 시프트 연산자를 다음과 같이 나타낼 수 있습니다.

Java의 비트 연산자

참고: 양수에 오른쪽 시프트 연산자를 적용하면 결과에도 양수가 표시됩니다. 마찬가지로 음수에 오른쪽 시프트 연산자를 적용하면 결과에도 음수가 표시됩니다.

예: x = 256이고 x = -256인 경우 지정된 위치 4에 부호 있는 오른쪽 시프트 연산자를 적용합니다.

x = 256인 경우

256 >> 4

256/24= 16

x = -256인 경우

-256 >> 4

-256/24= -16

위의 예에서 우리는 연산자 256이 16으로 변환되고 -256이 -16으로 변환되는 것을 관찰했습니다.

Java 프로그램을 만들고 왼쪽 시프트 연산자를 구현해 보겠습니다.

SignedRightShiftOperatorExample.java

 public class SignedRightShiftOperatorExample { public static void main(String args[]) { int x = 50; System.out.println(&apos;x&gt;&gt;2 = &apos; + (x &gt;&gt;2)); } } 

산출

 x&gt;&gt;2 = 12 

부호 있는 왼쪽 시프트 연산자(<<)< strong>

부호 있는 왼쪽 시프트 연산자(<<) shifts a bit pattern to the left. it is represented by symbol <<.< strong>또한 가장 왼쪽 비트(부호 비트)도 유지합니다. 부호 비트는 보존되지 않습니다.

일반적으로 < Java의 비트 연산자

예 1: <를 이동한 후의 결과는 무엇입니까?<3. the value of a is 20.< strong>

20을 이진수로 표현하면 = 00010100

왼쪽 시프트 연산자를 수행하면 다음을 얻습니다.

특수문자가 뭐야?

a << 3 = 10100000(마지막 3비트는 채워진 비트입니다)

적대적 검색

<< 3 = 160

수식을 이용하여 결과를 확인해 보겠습니다.

20 << 3

20*2= 20*8 = 160

예 2: <를 이동한 후의 결과는 무엇입니까?<2. the value of a is -10.< strong>

-10을 이진수로 표현하면 = 11110110

에<<2 11011000='<strong' =>-40

수식을 이용하여 결과를 확인해 보겠습니다.

-10 << 3

-10*22= -10*4 = -40

Java 프로그램을 만들고 부호 있는 왼쪽 시프트 연산자를 구현해 보겠습니다.

SignedLeftShiftOperatorExample.java

 public class SignedLeftShiftOperatorExample { public static void main(String args[]) { int x = 12; System.out.println(&apos;x&lt;<1 = ' + (x << 1)); } < pre> <p> <strong>Output</strong> </p> <pre> x&lt;<1 24 = < pre> <h3>Unsigned Right Shift Operator (&gt;&gt;&gt;)</h3> <p>It shifts a zero at the leftmost position and fills 0. It is denoted by the symbol <strong>&gt;&gt;&gt;.</strong> Note that the leftmost position after &gt;&gt; depends on the sign bit. It does not preserve the sign bit.</p> <p> <strong>Example: If a=11110000 and b=2, find a&gt;&gt;&gt;b?</strong> </p> <p>a &gt;&gt;&gt; b = 11110000 &gt;&gt;&gt; 2 = <strong>00111100</strong> </p> <p>The left operand value is moved right by the number of bits specified by the right operand and the shifted bits are filled up with zeros. Excess bits shifted off to the right are discarded.</p> <p>Therefore, before shifting the bits the decimal value of a is 240, and after shifting the bits the decimal value of a is 60.</p> <p>Let&apos;s create a Java program and use the unsigned right shift operator.</p> <p> <strong>UnsignedRightShiftOperatorExample.java</strong> </p> <pre> public class UnsignedRightShiftOperatorExample { public static void main(String args[]) { int x = 20; System.out.println(&apos;x&gt;&gt;&gt;2 = &apos; + (x &gt;&gt;&gt;2)); } } </pre> <p> <strong>Output</strong> </p> <pre> x&gt;&gt;&gt;2 = 5 </pre> <hr></1></pre></1>

산출

 x&gt;&gt;&gt;2 = 5