관리 메뉴

Frog is cry

비트반전 연산자, 이항 연산자(Day05) 본문

JAVA/국비수업

비트반전 연산자, 이항 연산자(Day05)

Frog is cry 2020. 7. 14. 15:40
package day06;

public class Day06_01 {
	// 비트반전 연산자~ : 연산의 결과로 산출되는 산출 타입은 int타입이 된다.
	public static void main(String[] args) {
		byte v1 = 10;	// 바이트 타입의 v1 변수에 10을 할당
//		byte v2 = v1;	// v1을 v2에 할당
//		byte v2 = ~v1;		
		int v2 = ~v1;	// v1을 비트 반전하여 v2에 할당함. v1을 비트 반전하는 순간 정수화됨
						// 그래서 바이트 타입의 v2에 할당하는  것이 에러가됨.
		/*
		 * int num = 10;
		 * int num2 = -num;
		 * 
		 */
		
		byte v3 = 10;
		int v4 = ~v3 + 1;	// -10이 v2에 저장됨	
							// 이 개념은 1의 보수와 2의 보수를 구하는 개념을
							// 자바 코드로 응용한 것으로 이해.
		
		System.out.println("v3 : " + ~v3);
		System.out.println("v4 : " + v4);
		
		
	}
}
package day06;
/*
 이항 연산자 : 피연산자가 두개인 식에 연산자 이외의 항목이 두 개인 식에서 사용하는 연산자를 
			이항연산자라고 합니다.
   
 */
public class Day06_02 {
	public static void main(String[] args) {

	byte byte1 = 1;
	byte byte2 = 1;
//	byte byte3 = byte1 + byte2;	// byte타입의 변수끼리 연산할 때는 정수형으로 변환되어 연산함
								// long 타입을 제외한 정수의 산술 연산은 무조건 int타입으로 변환 후 연산을 수행함
								
	int result1 = byte1 + byte2;	// 이와같이 수정해야함
	
	// 다음 코드에서 최종적으로 변수에 저장되는 값이 무엇인지 생각하세요.
	int int1 = 10;
	int int2 = 4;
	int result2 = int1 / int2;	// result2에는 무슨값? -> 2
	// int1과 int2를 나눗셈하면 2.5가 나오지만 연산 결과는 소수점 이하 부분을 버리고 2만 산출된다.
	// result2에는 2가 저장된다.
	
//	double result3 = int1 / int2; // result3에는 무슨값? -> 2.0
	/*
	 * 연산 후의 결과가 2이므로 2를 실수화해서 2.0이 저장된다
	 * 만약 2.5를 산출결과로 얻고싶다면 피연산자중 최소한 하나는 실수타입이어야한다.
	 * 따라서 다음과 같이 1.0을 곱하여 실수 타입으로 만든 후 산술 연산을 하거나
	 * int 1과 int2중 하나를 double 타입으로 강제 타입 변환 (캐스팅) 한 후 산술 연산을 하면 된다.
	 */
//	double result3 = (int1 * 1.0) / int2;	// 1.0을 곱하여 실수 타입으로 만든 후 산술 연산
//	double result3 = (double) int1 / int2;  // double 타입으로 강제 타입변환(캐스팅)한 후 산술 연산
	double result3 = int1 / (double) int2;	// double 타입으로 강제 타입변환(캐스팅)한 후 산술 연산

	System.out.println(result2);
	System.out.println(result3);
		
	}
}
​

 

'JAVA > 국비수업' 카테고리의 다른 글

변수의 오버플로우(Day06)  (0) 2020.07.14
타입별 연산(Day06)  (0) 2020.07.14
산술 연산자, 단항 연산자, 논리 부정 연산자(Day04)  (0) 2020.07.14
전위형, 후위형(Day04)  (0) 2020.07.14
실습문제(Day03)  (0) 2020.07.14
Comments