인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

아무도_모를_아이디님의 프로필 이미지

작성한 질문수

김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션

정리

숫자와 문자의 2진수 숫자가 동일할 경우 타입에 대한 메타정보는 어디에 있나요

작성

·

161

·

수정됨

0

Java는 해당 강의만 구매 해서 앞의 강의 내용에 있을지 모르겠습니다만 헷갈리는 부분이 있습니다.

 

숫자와 문자의 2진수 표현은 같고

데이터타입이 숫자 타입인지 문자 타입인지 나타내는 byte 도 있을 것 같은데 이걸 어떻게 구분하는지 구글링에서 검색할 수 있는 키워드나 답을 알려주실 수 있으실까요

 

숫자 65의 2진수 표현: 1000001

문자 'A'의 2진수 표현: 1000001

 

강의 내용에 java의 경우 1byte의 prefix를 통해 음수를 표현할 수 있다고 하셨는데 데이터 타입은 어디에서 관리되는지 궁금하네요. 저장되는 메모리 구역이 다른지..그렇다 해도 할당된 데이터 구조 내에 있어야 할 것 같은데 진짜 궁금하네요

 

 

클로드에선 아래와 같이 답을 줬는데요

각 데이터 타입은 1바이트부터 8바이트까지 고유한 메모리 할당 방식을 가지고 있어, 메모리 내 위치와 크기로 타입을 구분할 수 있습니다.

 

그럼 각 데이터에 대한 메모리 위치는 stack 에서 가지고 있지 않나 싶은데 stack 에서도 해당 데이터 타입이 byte 인지 아니면 텍스트인지 어떻게 알고 있는지 다시 궁금하네요. -ㅂ-

 

stack을 공부하면 되겠네요...

 

문자인코딩 섹션이 단순한 내용 같아도 진짜 생각 많이 하게 되는 강의네요.

답변 2

0

dev.rudevico님의 프로필 이미지

데이터타입이 숫자 타입인지 문자 타입인지 나타내는 byte 도 있을 것 같은데

-> 이 부분은 데이터가 저장된 메모리에 함께 보관되는 것이 아니라, .java 코드 파일을 기반으로 해석하게 됩니다.

예를 들어 0100 0001(10진수 65)가 메모리 상의 어딘가에 위치해 있다고 합시다.

  • 만약 int value = 65; 형태로 자바 코드에 작성되어 있다면

int value 65; // 메모리 상에 0100 0001로 보관
System.out.println(value); // prints 65
  • 만약 char = 65; 형태로 자바 코드에 작성되어 있다면

char value = 65; // 메모리 상에 0100 0001로 보관
System.out.println(value); // prints 'A'

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 아무도_모를_아이디님

자바에는 int, String, Integer 같은 고유의 타입이 있습니다.

그리고 각 타입별로 데이터를 다루는 방식이 달라집니다.

예를 들어서 int라는 4byte를 long이라면 8byte를 사용하게 됩니다.

정리하면 데이터를 저장할 때 마다 메모리에 두고 구분하는 것이 아니라, 지정된 타입의 표현에 의해서 구분하게 됩니다.

감사합니다.