달력

12

« 2019/12 »

  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  
  •  
  •  

   

시프트 연산자- >> 연산시 음수인 경우와 양수인 경우 확인

   

   

소스코드

  1. public class OperatorEx17 {
  2.    
  3.         public static void main(String[] args)
  4.         {
  5.                 byte a1 = 12;
  6.                 System.out.println("");
  7.                 System.out.println("a1 : " + a1);
  8.                 byte g = (byte)(a1 >> 2);
  9.                 System.out.println("a1 >> 2: " + g);
  10.                  
  11.                 byte a2 = -12;
  12.                 System.out.println("");
  13.                 System.out.println("a2 : " + a2);
  14.                 byte h = (byte)(a2 >> 2);
  15.                 System.out.println("a2 >> 2: " + h);
  16.                  
  17.                 System.out.println("");
  18.                 System.out.println("a2 : " + a2);
  19.                 byte r = (byte)(a2 >>> 2);
  20.                 System.out.println("a2 >>> 2: " + r);
  21.         }
  22. }


 

   

출력결과 

   

Posted by codedragon codedragon

댓글을 달아 주세요

   

시프트 연산자 확인

   

   

소스코드

   

  1. public class OperatorEx11 {
  2.         public static void main(String[] args){
  3.                 System.out.println("=========시프트 연산자=========");
  4.                 System.out.println("");
  5.                  
  6.                 byte a = 12;
  7.                 // 128 64 32 16 8 4 2 1
  8.                 // 0   0  0  0  1 1 0 0
  9.                 // 0   0  0  0  0 0 1 1  ( >> 2 )
  10.                 // 0   0  1  1  0 0 0 0  ( << 2 )
  11.                  
  12.                 System.out.println("a : " + a);
  13.                 byte c = (byte)(>> 2);
  14.                 System.out.println("a >> 2: " + c);
  15.                  
  16.                 System.out.println("");
  17.                 System.out.println("a : " + a);
  18.                 byte d = (byte)(<< 2);
  19.                 System.out.println("a << 2: " + d);
  20.                  
  21.                 System.out.println("");
  22.                 System.out.println("a : " + a);
  23.                 byte e = (byte)(>>> 2);
  24.                 System.out.println("a >>> 2: " + e);
  25.                  
  26.                 System.out.println("");
  27.                 System.out.println("a : " + a);
  28.                 byte f = (byte)(>> 2);
  29.                 System.out.println("a >> 2: " + f);
  30.                  
  31.         }
  32. }


 

 

출력결과 

   

Posted by codedragon codedragon

댓글을 달아 주세요

   

 

시프트 연산자(Shift Operator)

bit단위의 연산처리를 수행하며 자료의 가공을 위해 오른쪽 또는 왼쪽으로 이동하여 값에 대한 변화를 일으키는 연산자입니다.

 

 

시프트 연산자 종류


연산자

의미

>> 

·       bit값을 오른쪽으로 이동.

·       이동으로 인한 빈자리는 부호값으로 채움(음수인 경우 1, 양수인 경우 0)

 

n >> 2;

<< 

·       bit값을 왼쪽으로 이동.

·       이동으로 인한 빈자리는 0으로 채움.

 

n << 2;

>>> 

·       bit값을 오른쪽으로 이동

·       이동으로 인한 빈자리는 0으로 채움.

 

n >>> 2;

 

 

연산 수식

비트 값

출력 값

5

0 0 0 0 0 1 0 1

0

5 >> 2

0 0 0 0 0 0 0 1

1

5 << 2

0 0 0 1 0 1 0 0

20

5 >>> 2

0 0 0 0 0 0 0 1

1

 

 

비트연산의 특징

·       왼쪽으로의 비트 열 이동은 2의 배수의 곱

·       오른쪽으로의 비트 열 이동은 2의 배수의 나눗셈

 

Posted by codedragon codedragon

댓글을 달아 주세요