>  기사  >  Java  >  JAVA 시프트 연산자

JAVA 시프트 연산자

高洛峰
高洛峰원래의
2016-12-16 17:03:311864검색

교대 연산자는 이진수를 기준으로 숫자를 이동하는 것입니다. 변환 방향과 숫자 채우기 규칙에 따라 <<(왼쪽 시프트), >>(부호 있는 오른쪽 시프트) 및 >>(부호 없는 오른쪽 시프트)로 나뉩니다. .
Shift 연산 중 byte, short 및 char 유형의 시프트 결과는 int 유형이 됩니다. byte, short, char 및 int를 시프트할 때 실제 이동 수는 이동 수에 32를 더한 값으로 지정됩니다. 나머지, 즉 33번 쉬프트하고 1번 쉬프트한 결과는 같습니다. 긴 값을 이동할 경우 실제 이동 횟수는 이동 횟수의 나머지 부분인 64입니다. 즉, 66번 이동한 결과는 2번 이동한 결과와 같습니다.

386 이상의 하드웨어는 단어 길이로의 이동을 변조합니다. 32비트를 오른쪽으로 이동한다는 것은 0비트를 오른쪽으로 이동한다는 것을 의미합니다. 0 ), 따라서 32비트만큼 오른쪽으로 이동한 9는 여전히 9입니다. for 루프의 조건을 예를 들어 i<=64로 변경하면 결과가 동일하다는 것을 알 수 있습니다.

세 개의 시프트 연산자의 이동 규칙 및 사용법은 다음과 같습니다.
<<연산 규칙: 모든 숫자를 이진수 형식으로 해당 자릿수만큼 왼쪽으로 이동하고, 상위 비트(폐기), 하위 공석은 0으로 채워집니다.
구문 형식:
이동해야 하는 숫자 << 이동 횟수
예: 3 << 그런 다음 숫자 3을 왼쪽으로 2자리 이동합니다. > 계산 과정: < 3 < 비트, 마지막으로 낮은 비트(오른쪽)의 두 개의 빈 비트를 0으로 채웁니다. 최종 결과는 0000 0000 0000 0000 0000 0000 0000 1100이며, 이를 십진수로 환산하면 12가 됩니다. 수학적 의미:
숫자가 넘치지 않는다는 전제하에 양수와 음수의 경우 왼쪽으로 한 자리 이동하는 것은 같습니다. 2의 1제곱을 사용하여 n 비트를 왼쪽으로 이동하는 것은 2의 n제곱을 곱하는 것과 같습니다.
 >>연산 규칙: 이진수 형식의 모든 숫자를 해당 자릿수만큼 오른쪽으로 이동하고, 하위 비트를 빼내고(버리고), 상위 비트의 빈 비트를 부호 비트로 채웁니다. , 양수에는 0을, 음수에는 1을 입력합니다.
구문 형식:
이동해야 하는 숫자 >> 이동 횟수
예를 들어 11 >> 숫자 11을 오른쪽으로 2자리 이동
계산 과정: 11의 이진 형식은 다음과 같습니다. 0000 0000 0000 0000 0000 0000 0000 1011, 그런 다음 하위 비트에서 마지막 두 숫자를 빼냅니다. 양수인 경우 상위 비트에 0이 추가됩니다. 최종적으로 얻은 결과는 0000 0000 0000 0000 0000 0000 0000 0010 입니다. 십진수로 환산하면 3 입니다.
수학적 의미: 한 비트를 오른쪽으로 쉬프트하면 2로 나누는 것과 같고, n 비트를 오른쪽으로 쉬프트하면 나누기와 같습니다. 2의 n제곱입니다.
 >>>연산 규칙: 모든 숫자를 이진 형식에서 해당 자릿수만큼 오른쪽으로 이동하고, 하위 비트를 이동(폐기)하고, 상위 비트의 빈 비트를 0으로 채웁니다. 이는 양수의 부호 있는 오른쪽 시프트와 동일하지만 음수의 경우에는 다릅니다.
다른 구조는 >>와 유사합니다.



JAVA 시프트 연산자와 관련된 더 많은 글은 PHP 중국어 홈페이지를 주목해주세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.