Developer Factory

08_07. JAVA - 비트 연산자(Bitwise Operator) 본문

Developer/Java

08_07. JAVA - 비트 연산자(Bitwise Operator)

Jeremy.Park 2014. 7. 3. 00:02
package com.eomjinyoung. java.basic .step02;

//////////////////////////////////////////////////////
//주제 : 비트 연산자(Bitwise Operator)
//////////////////////////////////////////////////////


/* 비트 연산자(Bitwise Operator)
 * : >>, >>>, <<, &, |, ^, ~
 */

public class Operator06
{
       public static void main( String[] args)
      {
             /* 테스트 1 : >>
             int i = 11;
             int s = i >> 2;
            
            System.out.println("i >> 2 : " + s);
             */
             /* 해설
             * - '>>' 연산자는 왼쪽으로 비트를 옮긴다. 빈자리는 부호비트로 채워진다.
             * i의 2진수 표현 : 0000 0000 0000 0000 0000 0000 0000 1011
             *           결과 : 00------------------------------00 0010(11 : 짤림)
             */

             /* 테스트 2 : >>
             int  i = -11;
             int s = i >> 2;
            
            System.out.println("i >> 2 : " + s);
             */
             /* 해설
             * - 결과는 음의 수가 나온다. 빈자리는 부호비트로 채워지기 때문에.
             * i의 2진수 표현 : 1111 1111 1111 1111 1111 1111 1111 0101    (-11)
             *           결과 : 11------------------------------11 1101(01: 짤림)
             */          

             /* 테스트 3 : >>>
             int i = 11;
             int s = i >>> 2;
            
            System.out.println("i >>> 2 : " + s);
             */
             /* 해설
             * - 빈자리는 0 으로 채워진다.
             * i의 2진수 표현 : 0000 0000 0000 0000 0000 0000 0000 1011
             *           결과 :00------------------------------00 0010(11 : 짤림)
             */

             /* 테스트 4 : >>>
             int i = -11;
             int s = i >>> 2;
            
            System.out.println("i >>> 2 : " + s);
             */
             /* 해설
             * i의 2진수 표현 : 1111 1111 1111 1111 1111 1111 1111 0101(-11)
             *           결과 : 00------------------------------11 1101(01: 짤림)
             */

             /* 테스트 5 : <<
             int i = 11;
             int s = i << 2;
            
            System.out.println("i << 2 : " + s);
             */
             /* 해설
             * - 왼쪽으로 이동하고 오른쪽 빈자리는 0으로 채워진다.
             * i의 2진수 표현 :   0000 0000 0000 0000 0000 0000 0000 1011
             *                결과 : 00--------------------------------10 1100
             */

             /* 테스트 6 : <<
             int i = -11;
             int s = i << 2;
            
            System.out.println("i << 2 : " + s);
             */
             /* 해설
             * i의 2진수 표현 :   1111 1111 1111 1111 1111 1111 1111 0101(-11)
             *          결과 : 11--------------------------------01 0100
             */

             /* 테스트 7 : &
             int i = 10, i2 = 11;
             int s = i & i2;
            
            System.out.println("i & i2 = " + s);
             */
             /* 해설
             * - bit의 논리연산을 수행한다. 두 bit 모두 1일때만 1이된다.
             *                  0000 1010 (10)
             *                & 0000 1011 (11)
             *                ------------------
             *                  0000 1010 (10)
             */

             /* 테스트 8 : ^
             int i = 10, i2 = 11;
             int s = i ^ i2;
            
            System.out.println("i ^ i2 = " + s);
             */
             /* 해설
             * - 두 bit의 값이 같지 않을 때만 1이된다.
             *            0000 1010 (10)
             *          ^ 0000 1011 (11)
             *          ------------------
             *            0000 0001 (1)
             */

             /* 테스트 9 : ~
             int i = 10;
             int s = ~i;
            
            System.out.println("~i = " + s);
             */
             /* 해설
             * - bit 값이 1인경우 0으로, 0인경우 1로 된다.
             *    ~  0000 1010
             *  -------------
             *     1111 0101
             */
      }
}