Daily coding

Java Basic : day 2 - Example 01 : Bit Operator 비트연산자 본문

Language/Java_basic

Java Basic : day 2 - Example 01 : Bit Operator 비트연산자

sunnnkim 2019. 11. 20. 19:08
package day2;

public class Ex01_BitOperation {
	public static void main(String[] args) {
		//191119 과제 - 1
	
		//과제 10번 : 비트 연산자
		//다음의 결과 값을 먼저 기입하고 결과를 확인하라. 
		System.out.println("----과제 10번----");
		int number = 5;
		// 2진수로 표현하면
		// 8421 8421 
		// 0000 0101
		// 0x5 (16)
		
		number = number << 4;
		// 8421 8421
		// 0000 0101 <-- 왼쪽으로 4칸씩 이동 (*2^4 = * 16)
		// 0101 0000 
		// 0x50 (16)
		// 80(decimal)
		System.out.println("number << 4 : " + number);
		
		number = number >> 5;
		// 8421 8421 
		// 0101 0000 <-- 오른쪽으로 5칸이동 ( *2^-5 = /32)
		// 0000 0010
		// 0x2(16)
		// 2(decimal)
		System.out.println("number >> 5 : " + number);
		
		number = number >> 1;
		// 8421 8421 
		// 0000 0010 <-- 오른쪽으로 1칸이동 ( *2^-1 = /2)
		// 0000 0001
		// 0x1(16)
		// 1(decimal)
		System.out.println("number >> 1 : " + number);


		
		
		//과제 191119 - 2
		//다음의 결과 값을 먼저 기입하고 결과를 확인하라.
		System.out.println("----과제 11번----");
		
		int num1, num2;
		num1 = 128;
		num2 = 56;
		//16진수로 바꾼다
		
		// num1 = 128
		// 8421 8421
		// 1000 0000
		// ----------
		// 0x80
		
		// num2 = 56
		// 8421 8421
		// 0011 1000
		// ----------
		// 0x38
		
		// & 연산
		num1 = (num1 & num2) | (num1 & num2);
		// (num1 & num2)
		// 1000 0000
		// 0011 1000
		// ----------
		// 0000 0000
		// 0x0
		
		// (num1 & num2) | (num1 & num2)
		// 0000 0000
		// 0000 0000
		// ----------
		// 0x0
		System.out.printf("(num1 & num2) | (num1 & num2) : 0x%x\n", num1);
		System.out.println("(num1 & num2) | (num1 & num2) : " + num1);
		
		//^ 연산 : 같을 때는 0, 다를 때는 1로 연산
		num2 = ~(num1 ^ num2);
		// num1 = 0000 0000
		// num2 = 0011 1000
		// num1 ^ num2
		// 8421 8421
		// 0000 0000
		// 0011 1000 
		// ----------
		// 0011 1000
		// ~ 연산 : 0->1, 1->0
		// 1100 0111
		// 0xC7
		// -57(decimal)
		byte by = (byte)num2;
		System.out.printf("(num1 & num2) | (num1 & num2) : 0x%x\n",by);
		System.out.println("~(num1 ^ num2) : " + by);

		
		
		

	}

}