은 java의 자동 변환으로 인해 발생합니다. 1. 128은 32비트 정수이며 처음 24는 모두 0이고 마지막 8자리는 10000000입니다. 🎜> 2. (바이트)128의 첫 번째 숫자는 바이트로 변환된 후 1이며, Java는 이를 음수의 보수 식별자로 간주합니다 3. System.out.println이 호출되면 Java 유형 시스템이 자동으로 byte 유형을 int로 변환합니다. 이때 처음 24비트는 모두 1이고 마지막 8비트는 1000입니다. 0000, 이는 여전히 -128입니다.4이므로 출력은 -128 입니다.
팁: Java는 바이트 연산을 수행할 때 자동 유형 변환을 수행해야 하며, 부호 없는 정수를 지원하지 않으므로 일반적으로 자동 확장으로 인해 발생하는 잘못된 비트를 보호하기 위해 & 연산을 사용해야 합니다.
은 java의 자동 변환으로 인해 발생합니다.
팁: Java는 바이트 연산을 수행할 때 자동 유형 변환을 수행해야 하며, 부호 없는 정수를 지원하지 않으므로 일반적으로 자동 확장으로 인해 발생하는 잘못된 비트를 보호하기 위해 & 연산을 사용해야 합니다.1. 128은 32비트 정수이며 처음 24는 모두 0이고 마지막 8자리는 10000000입니다. 🎜>
2. (바이트)128의 첫 번째 숫자는 바이트로 변환된 후 1이며, Java는 이를 음수의 보수 식별자로 간주합니다
3. System.out.println이 호출되면 Java 유형 시스템이 자동으로 byte 유형을 int로 변환합니다. 이때 처음 24비트는 모두 1이고 마지막 8비트는 1000입니다. 0000, 이는 여전히 -128입니다.4이므로 출력은 -128
입니다.
바이트 값 범위는 -128~127, 128 오버플로
128
은int
00000000 00000000 00000000 10000000
유형의 정수이고, 길이는32
비트byte
유형 정수의 길이는8
비트이므로 강제 변환 후 마지막8
비트는10000000
의 첫 번째 비트는 왼쪽에서 오른쪽으로 부호 비트,
0
의 값은0
~127
,1
의 값은-128
~-1
이
System.out.println(int)
을 호출하면 Java는byte -128
을 다시int -128
그래서
(byte) 128 == (int) -128