프로그래밍

(자바)타입 강제변환 질문좀 할께요

300을 byte로 강제변환 할 경우엔 byte 범위를 초과한 나머지값...44를 출력한다는건 알겠는데 왜 그 256 이하인 값도 그대로 출력 못하는건가요?

 

예를 들면 

 

System.out.print((byte)256); 하면

0이 출력됩니다.

 

또 -128~127까진 그대로 출력하는데 왜 이렇게 일관성이 없게 출력하는지 이유좀 간단히 알 수 있을까요? 이게 16진수랑 관련 있는건지..

 

답변 해주신 분께 미리 감사드립니다.

5개의 댓글

2020.03.30

일관성이 없는게 아니라 일관성이 있는 것임

우선 java의 byte 자료형은 2^8개의 정수를 표현할 수 있는데, 이 때 표현하는 범위는 음수, 양수 포함.

그러므로 256개중 절반은 양수, 절반은 음수를 표현할 수 있음.

 

그러므로 -128~-1 음수, 0, 1~128 양수까지만 저장할 수 있음 그 이상은 자료형에 저장할 수 있는 범위 초과이므로 출력을 못함.

 

256을 byte타입으로 형변환하면 127까지는 127이지만 그 초과분은 다시 거꾸로 -128부터 시작함. 그래서 256-127 = 129이므로

-128부터 세어나가다보면 -128로부터 129번째가 0이 되는 걸 알 수 있을 거임

그래서 0이 출력된거야.

257이라고 하면 1이 출력될거임.

2
2020.03.30
@숨은음은

답변 감사합니다. 수긍할 수 있을 정도로 이해했습니다.

0
2020.03.30
@찰나생멸

앗 미안.. -128~127까지 표현가능임 위에 실수로 1~128이라고 썻넹

고것만 수정하고 싶은데 답글달려서 수정이 안됨 ㅠ

0
2020.03.30

각 타입별로 표현할 수 있는 범위의 한계가 있음

컴퓨터는 이진수만 이해할 수 있고 byte는 8bit라는건까진 알고있지?

 

일반적으로 컴퓨터에서는 최상위비트(MSB)를 부호비트로 사용하고 해당 비트가 0일때 양수 1일때 음수로 표현함

정수형은 총 2^n개로 표현가능한데 byte는 8bit이고 숫자 0과 음수, 양수를 포함해서 -2n^(n-1) ~ 2^(n-1) - 1까지 표현이 가능해짐

 

진법변환과 보수법칙을 찾아서 공부하면 이해가 쉬울거야

 

본론으로 돌아가서 정수 300은 이진법으로 표현하면 32bit로 된 값일꺼야 앞에 빈자리들은 0으로 채워질꺼고 4자리씩 자른다 생각하고 의미있는 값들만 보면 0001/0010/1100 이고 이를 byte로 형변환하게되면 앞의 bit들이 다 떨어져나가고 제일 오른쪽 8bit만 남게되어 0010/1100만 남을거임

해당 bit를 10진수로 계산해보면 부호비트가 0이므로 양수로 표현되고 값은 32 + 8 + 4가 되므로 결과값인 44가 나오게되는거여

 

0
2020.03.30
@돌입

아 이렇게 생각할 수 있군요. 알려줘서 고마워요!

0
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜 조회 수
180531 [컴퓨터] 견적 뽑아봤는데 3 과연너의선택은무... 0 14 분 전 18
180530 [잡담] 지금 애플워치6 사는건 어때? EvenMoham 0 20 분 전 11
180529 [잡담] 전자제품 전문 커뮤니티같은거없음? 2 인상펴라 0 40 분 전 35
180528 [잡담] 컴퓨터 책상 추천좀요 6 하이웨이 0 1 시간 전 39
180527 [정보] 이번 인텔 13,14세대 CPU사태에 대한 공식입장 3 UBCS 2 2 시간 전 253
180526 [정보] G마켓에서 검색을 하면 검색이 안되고 그냥 메인페이지가 새... 5 r33156 0 3 시간 전 65
180525 [컴퓨터] 메인보드에 맞는 그래픽 카드 좀 추천해줘 12 갠챠나 0 4 시간 전 118
180524 [잡담] 개드립접속시 css 차단인가 광고차단 풀라고 하는데 3 스시오 0 4 시간 전 90
180523 [컴퓨터] 님들 모니터암 이거 호환 될거같음? 8 저는기어다닐거에요 0 5 시간 전 99
180522 [잡담] 리얼포스 45g 10만원에 파는데 5 짬지 0 6 시간 전 175
180521 [모바일] 내 s20+ 망가짐 4 모코하와이 0 7 시간 전 161
180520 [잡담] 왜 웹 발전은 거꾸로 가는가 2 노보케인 0 12 시간 전 278
180519 [컴퓨터] 이 정도면 이륙 가능함? 2 Cat드립미어캣 0 12 시간 전 111
180518 [컴퓨터] 씨퓨 온도상승으로 인한 쿨러작동 관련하여 질문드려용 ㅠㅠ 8 납븐연 0 13 시간 전 119
180517 [모바일] 뉴진스 혜린이 배경화면 3 Benetton 0 14 시간 전 244
180516 [모바일] 𝙄𝙑𝙀 배경화면 1 Benetton 0 14 시간 전 176
180515 [잡담] 개드립에올라왔던 새로운마우스 괴기 0 15 시간 전 171
180514 [컴퓨터] 외장 하드 추천좀 5 ㄴㅇㄹ 0 16 시간 전 81
180513 [프로그래밍] 의사는 뽑는 인원 제한하는데 부캠은 왜 제한 안 할까 5 조강현 0 16 시간 전 252
180512 [잡담] 제품좀 찾아줄 수 있음? 1 SNRB 0 17 시간 전 79