자바에서 은 무슨 뜻인가요?
는 자바의 시프트 연산자로, 부호 없는 오른쪽 시프트를 의미합니다.
교대 연산자의 피연산자도 이진 "비트"입니다. 정수 유형(주 유형 중 하나)을 처리하기 위해 단독으로 사용할 수 있습니다.
"부호 있는" 왼쪽 시프트 연산자(<<)는 연산자 왼쪽에 있는 피연산자를 연산자 오른쪽에 지정된 자릿수만큼 왼쪽으로 이동할 수 있습니다(아래에 0을 채움). 비트).
"부호 있는" 오른쪽 시프트 연산자(>>)는 연산자 왼쪽에 있는 피연산자를 연산자 오른쪽에 지정된 자릿수만큼 오른쪽으로 이동합니다. "부호 있는" 오른쪽 시프트 연산자는 "부호 확장"을 사용합니다. 값이 양수이면 상위 비트에 0이 삽입되고, 값이 음수이면 상위 비트에 1이 삽입됩니다.
Java는 또한 "0 확장"을 사용하는 "부호 없는" 오른쪽 시프트 연산자(>>>)를 추가합니다. 즉, 양수 또는 음수에 관계없이 상위 비트에 0을 삽입합니다. 이 연산자는 C 또는 C++에서는 사용할 수 없습니다.
char, byte 또는 short가 시프트되는 경우 시프트가 수행되기 전에 자동으로 int로 변환됩니다. 오른쪽의 하위 5비트만 사용됩니다. 이렇게 하면 int 내에서 비현실적인 자릿수를 이동하는 것을 방지할 수 있습니다. 긴 값을 처리하면 최종 결과도 길어집니다. 이때, Long 값에서 이미 만들어진 자릿수를 초과하여 이동하는 것을 방지하기 위해 오른쪽의 하위 6비트만을 사용하게 됩니다.
그러나 "부호 없는" 오른쪽 Shift를 수행할 때 문제가 발생할 수도 있습니다. 바이트 또는 짧은 값에 대해 오른쪽 시프트 연산을 수행하면 올바른 결과를 얻지 못할 수 있습니다(특히 Java 1.0 및 Java 1.1).
자동으로 int 유형으로 변환되고 오른쪽으로 이동됩니다. 그러나 "0 확장"은 발생하지 않으므로 이 경우 -1의 결과를 얻습니다. 다음 예제를 사용하여 자체 구현을 테스트할 수 있습니다.
public class URShift { public static void main(String[] args) { int i = -1; i >>>= 10; System.out.println(i); long l = -1; l >>>= 10; System.out.println(l); short s = -1; s >>>= 10; System.out.println(s); byte b = -1; b >>>= 10; System.out.println(b); } }
위 내용은 >>> 자바에서 무슨 뜻인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!