이항연산자 특징

canyi·2023년 6월 13일
0

java m1

목록 보기
5/40
package 강의자료.소스코드.ch03_연산자;

public class ex09_이항연산자_특징_byte {
	public static void main(String[] args) {
		byte a = 10;
		byte b = 30;
		byte c = (byte)(a * b);	// byte + byte - > int * int -> int 로 변환됨
//		int c = (byte)a * b;	// byte + byte - > int * int -> int 로 변환됨
		System.out.println(c);	// 300이 byte의 범위를 넘어가기 때문에 데이터 손실이 발생하여 44가 저장됨
	}
}

이유

300의 이진 표현 계산:

300은 10진수로 표현된 값입니다.
10진수 300을 2진수로 변환합니다.
300을 2진수로 변환하면 100101100이 됩니다.

byte로의 축소 변환:

byte는 8비트로 표현되는 데이터 타입입니다.
300의 이진 표현인 100101100은 9비트로 표현되므로 8비트로 축소해야 합니다.
오른쪽에서부터 8비트만을 선택하여 취하고, 나머지는 버립니다.
100101100에서 마지막 8비트인 00101100을 선택합니다.

부호 비트 확인:

byte는 부호 있는 데이터 타입이므로, 최상위 비트를 부호 비트로 사용합니다.
00101100의 최상위 비트는 0입니다. (양수를 나타냄)

부호 있는 정수로 변환:

최종적으로 양수인 00101100를 10진수로 변환하면 44가 됩니다.
따라서, 300을 byte로 변환하면 44가 됩니다.

profile
백엔드 개발 정리

0개의 댓글