>  기사  >  Java  >  Java의 Shift 연산 방법(<<, >>, >>>)

Java의 Shift 연산 방법(<<, >>, >>>)

怪我咯
怪我咯원래의
2017-06-30 10:31:081898검색

아래 편집기에서 Java071af19a55f4da1989e8c02b755ba052>,>>> 교대 작업 방법에 대한 기사를 가져올 수 있습니다. 편집자님이 꽤 좋다고 생각하셔서 지금 공유하고 모두에게 참고용으로 드리고자 합니다. 편집기를 따라 살펴보겠습니다

5dce8722668d42fdeb5645efabf1f16d>, 부호 있는 오른쪽 시프트는 피연산자의 전체 이진 값을 지정된 자릿수만큼 오른쪽으로 이동하고, 정수의 상위 비트를 0으로 채우고, 음수의 상위 비트를 1로 채웁니다(유지) 음수의 부호는 변경되지 않음).


int rightShift = 10;
System.out.println("十进制:" + rightShift + ", 二进制:" + Integer.toBinaryString(rightShift));
int newRightShift = rightShift >> 2;
System.out.println("右移2位后十进制:" + newRightShift + ", 右移2位后二进制" + Integer.toBinaryString(newRightShift));  //右移n位后的运算数x十进制结果,x = x / 2


위는 양의 정수이며, 연산 결과는 다음과 같습니다.

다음으로 음수를 오른쪽으로 2비트 이동하면 어떤 일이 발생하는지 살펴보겠습니다.

음수의 부호 있는 오른쪽 시프트의 기본 원리는 여전히 왼쪽 시프트와 동일합니다. 차이점은 부호 있는 오른쪽 시프트이기 때문에 오른쪽으로 시프트하는 최종 결과는 다음과 같습니다. -1. 정리하자면, 피연산자가 짝수이면 연산 결과는 x = -(|x| / 2)입니다. 피연산자가 홀수이면 연산 결과는 x = -(|x| / 2입니다. ) - 1.

> 오른쪽 시프트와 >> 부호 있는 오른쪽 시프트의 계산 결과는 같습니다

int rightShift = 10;
System.out.println("十进制:" + rightShift + ", 二进制:" + Integer.toBinaryString(rightShift));
int newRightShift = rightShift >>> 2;
System.out.println("右移2位后十进制:" + newRightShift + ", 右移2位后二进制" + Integer.toBinaryString(newRightShift));  //右移n位后的云算数x十进制结果,x = x / 2

위는 양의 정수이며, 연산 결과는 다음과 같습니다.

다음으로 음의 정수를 살펴보겠습니다. 연산 결과는 다음과 같습니다.

부호 없는 시프트 뒤의 이진수와 부호 있는 시프트 뒤의 이진수는 같아 보이지만, 부호 있는 오른쪽 시프트 연산은 실제로는 부호, 즉 상위 비트를 무시하는 산술 연산이라는 점을 기억하세요. 0을 균일하게 채웁니다.

위 내용은 Java의 Shift 연산 방법(<<, >>, >>>)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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