[자바 무료 강의] └ [심화] 형 변환 원리 - 코드라떼
Lesson List button
코스자바로 배우는 프로그래밍
hamburger button
강의└ [심화] 형 변환 원리최종수정일 2021-09-06
아이콘약 6분

자바 형 변환의 원리에 대해 배우는 강의입니다. 지금은 당장 필요 없을 수 있으나, 원리를 알면 이해를 더 잘할 수 있습니다. 만약에 형 변환에 대해 깊게 알고 싶다면 해당 강의를 들어보세요! 생각보다 큰 도움이 될 겁니다!

추가 노트

형 변환 원리


정수의 암시적 형 변환

image

정수의 암시적 형 변환은 byte 패딩을 붙이는 방식으로 형 변환을 합니다.


정수의 명시적 형 변환

image

정수의 명시적 형 변환은 byte 패딩을 제거하는 방식으로 변환하기 때문에 데이터 손실이 발생합니다. 형 변환되는 자료형의 표현 범위를 벗어나는 데이터는 변조가 될 수 있습니다.


접미사 L과 암시적 형 변환

image

기본적으로 접미사 L이 작성되지 않은 리터럴은 4 byte로 스택 메모리에 일시적으로 저장합니다. 그리고 long 형 변수에 저장될 때 byte 패팅을 붙여서 저장됩니다. 그러나 L 접미사가 작성되어 있는 리터럴은 8 byte로 스택 메모리에 일시적으로 저장 후 long 형 변수에 저장될 때 그대로 저장됩니다.

최종적으로 저장된 값은 동일합니다.


접미사 F와 암시적 형 변환

image

기본적으로 접미사 F가 작성되지 않은 리터럴은 배정도(8 byte)로 스택 메모리에 일시적으로 저장합니다. 그리고 double 형 변수에 저장됩니다. 그러나 접미사 F가 작성된 리터럴은 단정도(4 byte)로 스택 메모리에 일시적으로 저장되었다가 배정도(8 byte)로 변환한 후 double 형 변수에 저장됩니다.

리터럴을 처음부터 배정도로 할 것인지, 단정도로 할 것인지에 따라 변환되는 데이터의 크기가 다르므로 최종적으로 저장되는 데이터의 정밀도가 달라집니다.

예시로 400x400 해상도 이미지를 만들어 1600x1600으로 늘리는 것과, 처음부터 1600x1600 해상도 이미지를 만드는 것과 화질 차이가 나는 것을 떠올려보면 쉽게 이해될 겁니다.


정수에서 실수로 명시적 형 변환

image

부동소수점은 소수점이 떠다닌다라는 의미를 가지고 있습니다. 이러한 부동소수점에서 정수를 추출하는 방법은 다음과 같습니다.

  1. 지수부를 10진수로 변경하면 132이다.
  2. 132 - float bias(127) 를 계산하면 5이므로 이후에 이동시킬 소수점의 횟수는 5입니다.
  3. 가수부의 맨 앞에 1 bit를 추가합니다.
  4. 부동소수점을 맨 앞의 비트 뒤로 이동시킨다.
  5. 부동소수점을 다섯 칸 이동시킵니다.
  6. 소수점 앞에 있는 비트를 십진수로 변환하면 32입니다.


연산시 형 변환

연산시 형 변환과 관련된 예시는 다음과 같습니다.

image

image

image

도전자 질문
작성된 질문이 없습니다
이용약관|개인정보취급방침
알유티씨클래스|대표, 개인정보보호책임자 : 이병록
이메일 : cs@codelatte.io
사업자등록번호 : 824-06-01921
통신판매업신고 : 2021-성남분당C-0740
주소 : 경기도 성남시 분당구 대왕판교로645번길 12, 9층 24호
Lesson List button
코스자바로 배우는 프로그래밍
hamburger button
강의└ [심화] 형 변환 원리최종수정일 2021-09-06
아이콘약 6분

자바 형 변환의 원리에 대해 배우는 강의입니다. 지금은 당장 필요 없을 수 있으나, 원리를 알면 이해를 더 잘할 수 있습니다. 만약에 형 변환에 대해 깊게 알고 싶다면 해당 강의를 들어보세요! 생각보다 큰 도움이 될 겁니다!

추가 노트

형 변환 원리


정수의 암시적 형 변환

image

정수의 암시적 형 변환은 byte 패딩을 붙이는 방식으로 형 변환을 합니다.


정수의 명시적 형 변환

image

정수의 명시적 형 변환은 byte 패딩을 제거하는 방식으로 변환하기 때문에 데이터 손실이 발생합니다. 형 변환되는 자료형의 표현 범위를 벗어나는 데이터는 변조가 될 수 있습니다.


접미사 L과 암시적 형 변환

image

기본적으로 접미사 L이 작성되지 않은 리터럴은 4 byte로 스택 메모리에 일시적으로 저장합니다. 그리고 long 형 변수에 저장될 때 byte 패팅을 붙여서 저장됩니다. 그러나 L 접미사가 작성되어 있는 리터럴은 8 byte로 스택 메모리에 일시적으로 저장 후 long 형 변수에 저장될 때 그대로 저장됩니다.

최종적으로 저장된 값은 동일합니다.


접미사 F와 암시적 형 변환

image

기본적으로 접미사 F가 작성되지 않은 리터럴은 배정도(8 byte)로 스택 메모리에 일시적으로 저장합니다. 그리고 double 형 변수에 저장됩니다. 그러나 접미사 F가 작성된 리터럴은 단정도(4 byte)로 스택 메모리에 일시적으로 저장되었다가 배정도(8 byte)로 변환한 후 double 형 변수에 저장됩니다.

리터럴을 처음부터 배정도로 할 것인지, 단정도로 할 것인지에 따라 변환되는 데이터의 크기가 다르므로 최종적으로 저장되는 데이터의 정밀도가 달라집니다.

예시로 400x400 해상도 이미지를 만들어 1600x1600으로 늘리는 것과, 처음부터 1600x1600 해상도 이미지를 만드는 것과 화질 차이가 나는 것을 떠올려보면 쉽게 이해될 겁니다.


정수에서 실수로 명시적 형 변환

image

부동소수점은 소수점이 떠다닌다라는 의미를 가지고 있습니다. 이러한 부동소수점에서 정수를 추출하는 방법은 다음과 같습니다.

  1. 지수부를 10진수로 변경하면 132이다.
  2. 132 - float bias(127) 를 계산하면 5이므로 이후에 이동시킬 소수점의 횟수는 5입니다.
  3. 가수부의 맨 앞에 1 bit를 추가합니다.
  4. 부동소수점을 맨 앞의 비트 뒤로 이동시킨다.
  5. 부동소수점을 다섯 칸 이동시킵니다.
  6. 소수점 앞에 있는 비트를 십진수로 변환하면 32입니다.


연산시 형 변환

연산시 형 변환과 관련된 예시는 다음과 같습니다.

image

image

image

도전자 질문
작성된 질문이 없습니다
이용약관|개인정보취급방침
알유티씨클래스|대표, 개인정보보호책임자 : 이병록
이메일 : cs@codelatte.io|운영시간 09:00 - 18:00(평일)
사업자등록번호 : 824-06-01921|통신판매업신고 : 2021-성남분당C-0740
주소 : 경기도 성남시 분당구 대왕판교로645번길 12, 9층 24호(경기창조혁신센터)