자바 기호 없 는 오른쪽 이동 과 오른쪽 연산 자 사용 안내
4831 단어 Java부호 없 이 오른쪽으로 이동오른쪽 연산 자
최근 에 자바 공 부 를 했 는데>>>연산 자 를 잘 모 르 고 바 이 두 에서 찾 아 봤 는데 설명 이 잘 안 돼 요.그럼 다음은 내 가>>연산 자 에 대한 인식 을 설명 하 겠 습 니 다.>>연산 자:기호 없 이 오른쪽 연산 자 는 학습>>기호 없 이 오른쪽 연산 자 를 이동 하기 전에 우 리 는 먼저 오른쪽 연산 자 를 알 아 보 겠 습 니 다>>
다음 표 는 비트 연산 자의 기본 연산 을 보 여 줍 니 다.정수 변수 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 보 최 하위 입 니 다.
이동 하 는 자릿수 가 이 유형의 최대 자릿수 를 넘 으 면 컴 파일 러 는 이동 하 는 자릿수 에 대해 모드 를 취한 다.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
자바 의 부호 없 는 오른쪽 이동 과 오른쪽 이동 연산 자 에 대한 사용 설명 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 자바 의 부호 없 는 오른쪽 이동 과 오른쪽 이동 연산 자 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.