3
저는 초보자입니다. 나는 오랜 시도 후에도이 줄을 이해할 수 없다.프리미티브 타입의 캐스팅
바이트 num = (바이트) 135;
이 줄은 결과 부호 -121에 왜 부호있는 숫자를 부여합니까?
누구든지 자세히 설명 할 수 있습니까?
저는 초보자입니다. 나는 오랜 시도 후에도이 줄을 이해할 수 없다.프리미티브 타입의 캐스팅
바이트 num = (바이트) 135;
이 줄은 결과 부호 -121에 왜 부호있는 숫자를 부여합니까?
누구든지 자세히 설명 할 수 있습니까?
Java에서 byte
은 항상 서명되어 있으며 -128
에서 127
까지의 범위에 있습니다. int
리터럴 135
이 byte
으로 다운 캐스팅되면 결과는 음수가됩니다. 왜냐하면 8 번째 비트가 설정되기 때문입니다.
1000 0111
구체적 JLS, Section 5.1.3는 상태 :
가당신은이 로우 원시적 변환이다하는일체형 T에 대한 부호 정수의 축소 변환은 단순히 n은 사용 된 비트들의 수는 상기 N 개의 최하위 비트 만, 모두 버리고 숫자 값의 크기에 대한 정보의 손실 가능성 외에도 결과 값의 부호가 입력 값의 부호와 다를 수 있습니다.
byte
에
135
같은
int
문자 등을 캐스팅합니다.
2의 보수 표현을 찾습니다. 기본적으로 135는 너무 커서 바이트에 맞추기에 너무 크며 –
에 맞게 잘린 경우 음수처럼 보입니다. '바이트'는 8 비트 부호있는 값이고 -128에서 127 사이의 값을 가지기 때문에 비트 pattern for 135 (힌트 : Windows 계산기는 십진수, 8 진수, 2 진수 및 16 진수 사이에서 변환합니다)를 찾아 8 비트 부호있는 값으로 무엇을 의미하는지 파악합니다. –