자바 기호 없 는 오른쪽 이동 과 오른쪽 연산 자 사용 안내

자바 기호 없 음 오른쪽 이동 안내
 최근 에 자바 공 부 를 했 는데>>>연산 자 를 잘 모 르 고 바 이 두 에서 찾 아 봤 는데 설명 이 잘 안 돼 요.그럼 다음은 내 가>>연산 자 에 대한 인식 을 설명 하 겠 습 니 다.>>연산 자:기호 없 이 오른쪽 연산 자 는 학습>>기호 없 이 오른쪽 연산 자 를 이동 하기 전에 우 리 는 먼저 오른쪽 연산 자 를 알 아 보 겠 습 니 다>>
다음 표 는 비트 연산 자의 기본 연산 을 보 여 줍 니 다.정수 변수 A 의 값 이 60 이 고 변수 B 의 값 이 13 이 라 고 가정 합 니 다.
조작 부호
묘사 하 다.
예시

대응 위치 가 모두 1 이면 결 과 는 1 이 고 그렇지 않 으 면 0 이다.
(A&B)12,즉 0000 1100 을 얻 었 다.
|
상대 적 으로 0 이면 결 과 는 0 이 고 그렇지 않 으 면 1 이다.
(A|B)61,즉 0011 1101
^
상대 적 으로 비트 값 이 같 으 면 결 과 는 0 이 고 그렇지 않 으 면 1 이다.
(A^B)49,즉 0011 0001

비트 에 따라 반송 연산 자 를 뒤 집 는 조작 수의 한 자리,즉 0 이 1 이 되 고 1 이 0 이 된다.
(〜A)획득-61,즉 1100 0011
<<
비트 왼쪽으로 연산 자 를 옮기다.왼쪽 조작 수 는 위치 에 따라 왼쪽으로 이동 하고 오른쪽 조작 수가 지정 한 자릿수 입 니 다.
A<<2 획득 240,즉 1111 0000
>>
비트 오른쪽으로 연산 자 를 옮기다.왼쪽 조작 수 는 위치 에 따라 오른쪽으로 이동 하고 오른쪽 조작 수가 지정 한 자릿수 이다.
A>>2 획득 15 즉 1111
>>>
위치 에 따라 오른쪽으로 이동 하여 0 조작 부 호 를 보충 하 다.왼쪽 조작 수의 값 은 오른쪽 조작 수가 지정 한 자릿수 에 따라 오른쪽으로 이동 하고 이동 한 빈 자 리 는 0 으로 채 웁 니 다.
A>>>2 획득 15 즉 0000 1111
오른쪽 연산 자
>>오른쪽 연산 자:양수 고위 보 0,음수 고위 보 1
예 를 들 어:

public static void main(String[] args) {
    /**
     * 10    :1010
     *      ,        0    
     *      32 bit
     */
    System.out.println(Integer.toBinaryString(10 >> 2));
    System.out.println(Integer.toBinaryString(-10));
    System.out.println(Integer.toBinaryString(-10 >> 2));
  }
출력:

컴퓨터 계산 데 이 터 는 코드 를 보충 하 는 방식 으로 계산한다.
양수 원 코드,반 코드,패 치 는 변 하지 않 습 니 다.
음수(-10):8bit(비트)로 표시
원 코드--->1000 1010
리 코딩--->1111 0101(기호 위 치 는 변 하지 않 고 다른 위 치 는 반대)
보충 코드--->1111 0110(반 코드 기초+1)
그래서-10 회 출력:1111...0110
-10>>2:111...1101(고위 보 1)
10 >> 2:0000…0010
부호 없 는 오른쪽 연산 자
>>>기호 가 없 는 오른쪽 연산 자 는>>오른쪽 연산 자의 정수 와 같 습 니 다.다만 관건 은 음수 가 다 르 기 때 문 입 니 다.>>연산 자 오른쪽 이동:*음수 고위 보 0,기타 위 치 는 변 하지 않 습 니 다**
예 를 들 어:

public static void main(String[] args) {
    System.out.println(Integer.toBinaryString(10 >>> 2));
    System.out.println(Integer.toBinaryString(-10));
    System.out.println(Integer.toBinaryString(-10 >>> 2));
  }
출력:(상기 예 와 비교)

해명 하 다.

요약:
>>>와>의 차 이 는:
  • >>음수 고위 보 0;
  • >>음수 고위 보 1;
  •  왼쪽 연산 자   <<
    왼쪽으로 이동 하 는 규칙 은 한 가지 만 기억 합 니 다.이 숫자 에 대응 하 는 바 이 너 리 코드 는 전체적으로 왼쪽으로 이동 하고 가장 높 은 위 치 를 버 리 며 0 보 최 하위 입 니 다.
    이동 하 는 자릿수 가 이 유형의 최대 자릿수 를 넘 으 면 컴 파일 러 는 이동 하 는 자릿수 에 대해 모드 를 취한 다.int 형 에 대해 33 비트 를 이동 하면 실제 33%32=1 비트 만 이동 합 니 다.
    왼쪽으로 이동 하 는 연산 수가 int 형식 일 때 1 위 를 이동 할 때마다 31 위(0~31)가 이동 하고 버 려 집 니 다.
    왼쪽으로 이동 하 는 연산 수가 log 형식 일 때 1 위 를 이동 할 때마다 63(0~63)위 를 옮 기 고 버 려 야 합 니 다.
    왼쪽으로 이동 하 는 연산 수가 byte 와 short 형식 일 때 자동 으로 이 유형 을 int 형 으로 확대 합 니 다.
    양수 와 음수 의 왼쪽 이동 조작 은 두 가지 상황 으로 나 뉜 다.
    (1)n 비트 를 왼쪽으로 이동(1<=n<=31)한 후 조작 수가 넘 치지 않 았 습 니 다.
             이러한 상황 은===원 조작*2^n 과 같 습 니 다.예 를 들 어 60 의 바 이 너 리 패 치 는 111100=2^5+2^4+2^3+2^2=60 입 니 다.
    60 왼쪽으로 25 자 리 를 옮 긴 후의 바 이 너 리 패 치 는:0111000000000000000000000000000=(2^5+2^4+2^3+2^2)*2^25=2^30+2^29+2^28+2^27
    한편,int 유형 은 네 개의 바이트 에서 모두 32 위 를 차지 하고 첫 번 째 는 기호 위치 이 며 int 유형의 수치 범 위 는(-2^31~2^31-1)이기 때문에 60 왼쪽 이동 25 비트 의 조작 수 는 넘 치지 않 았 고 가장 높 은 위 치 는 0 이다.
    (2)n 비트 를 왼쪽으로 이동(1<=n<=31)한 후 조작 수가 넘 칩 니 다.
    그러나 한 자 를 왼쪽으로 이동 하면 60 왼쪽 에서 26 자 를 이동 한 후의 바 이 너 리 패 치 는 다음 과 같 습 니 다.
    11110000000000000000000000000000 =(2^5+2^4+2^3+2^2)*2^26=2^31+2^30+2^29+2^28
    이때 이 진 최고 위 는 1 이 고 조작 수가 넘 쳐 마이너스 가 됩 니 다.
    
    60      (    ):
    111100  60
    -60      (    ):
    11111111111111111111111111000100  -60
     
              :     ,0    
    60  1     (    ):
    1111000  120
    60  25     (    ):
    1111000000000000000000000000000  2013265920
    60  26     (    ):
    11110000000000000000000000000000  -268435456
    60  30     (    ):
    0  0
    -60  1     (    ):
    11111111111111111111111110001000  -120
    -60  25     (    ):
    10001000000000000000000000000000  -2013265920
    -60  26     (    ):
    10000000000000000000000000000  268435456
    -60  32     (    ):
    11111111111111111111111111000100  -60
    
    자바 의 부호 없 는 오른쪽 이동 과 오른쪽 이동 연산 자 에 대한 사용 설명 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 자바 의 부호 없 는 오른쪽 이동 과 오른쪽 이동 연산 자 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 부탁드립니다!

    좋은 웹페이지 즐겨찾기