>>와 >>의 차이점
와의 차이는 무엇입니까?>>>
그리고.>>
운영자(Java)?
>>
산술 시프트가 맞습니까?>>>
논리적 전환이 옳습니다.
연산 시프트에서는 부호 비트가 확장되어 수의 부호성을 유지한다.
예를 들어 -2는 8비트로 표시됩니다.11111110
(가장 중요한 비트의 가중치가 음수이기 때문입니다).산술 시프트를 사용하여 조금만 오른쪽으로 이동하면11111111
또는 -1 입니다.단, 논리적인 오른쪽 시프트는 값이 부호 있는 숫자를 나타낼 수 있다는 점에는 개의치 않습니다.모든 것을 오른쪽으로 이동하고 왼쪽부터0 으로 채웁니다.논리적인 시프트를 사용하여 -2의 오른쪽을 1비트 이동하면01111111
.
>>>
unsigned-shift 입니다.0 을 삽입합니다.>>
서명되어 부호 비트를 확장합니다.
JLS 15.19 시프트 연산자
이동 연산자에는 왼쪽 이동이 포함됩니다.
<<
, 서명된 우측 시프트>>
및 부호 없는 오른쪽 시프트>>>
.가치
n>>s
이n
오른쪽 방향의s
sign-extension과 비트 위치.가치
n>>>s
이n
오른쪽 방향의s
zero-extension과 비트 위치.
System.out.println(Integer.toBinaryString(-1));
// prints "11111111111111111111111111111111"
System.out.println(Integer.toBinaryString(-1 >> 16));
// prints "11111111111111111111111111111111"
System.out.println(Integer.toBinaryString(-1 >>> 16));
// prints "1111111111111111"
를 만들기 위해서 일들을 보다 긍정적인 상대 추가합니다.
System.out.println(Integer.toBinaryString(121));
// prints "1111001"
System.out.println(Integer.toBinaryString(121 >> 1));
// prints "111100"
System.out.println(Integer.toBinaryString(121 >>> 1));
// prints "111100"
때문에 긍정적이다 둘 다 및 부호 없는 변화 대부분의 비트에서 왼쪽으로 0을 추가할 것이다.
관련 질문
- 오른쪽 Shift키 누르기 2-1에 나누다 공연하는.
- 더 빠르고 분열하고 있는 자바에?, 또한 multiplying한 것보다 비트고 있다.NET?
- c/c++는 자바에서와 같이 '>>>'를 하는 방법에 대해 설명합니다(오른쪽 시프트 제외).
- 마이너스 논리 이동
- Java의 >>> vs >>> 오퍼레이터?
- Java 연산자 >>와 >>의 차이점은 무엇입니까?
- >> 연산자와 >> 연산자의 차이
- C#/Java와 같은 고급 언어가 비트 시프트 수 피연산자를 마스크하는 이유는 무엇입니까?
1 >>> 32 == 1
둘 다 우회전이지만>>>
이unsigned
매뉴얼에서 다음 항목을 참조하십시오.
부호 없는 오른쪽 시프트 연산자 ">>"는 0을 맨 왼쪽 위치로 이동하고, ">" 뒤의 왼쪽 위치는 부호 내선번호에 따라 달라집니다.
>>>
항상 맨 왼쪽 비트에 0을 붙입니다.>>
기호 내용에 따라 1 또는 0을 붙입니다.
논리적인 우측 이동(v >>> n
)의 비트 값이 반환됩니다.v
에 의해 오른쪽으로 이동되었다n
비트 위치 및 0이 왼쪽에서 이동됩니다.바이너리로 작성된 8비트 값 이동을 고려해 보십시오.
01111111 >>> 2 = 00011111
10000000 >>> 2 = 00100000
비트를 부호 없는 음이 아닌 정수로 해석하면 논리 우측 이동은 숫자를 대응하는 2의 거듭제곱으로 나누는 효과가 있습니다.그러나 숫자가 2의 보완 표현일 경우 논리 오른쪽 이동은 음수를 올바르게 분할하지 않습니다.예를 들어 위의 두 번째 오른쪽 시프트는 비트가 부호 없는 숫자로 해석될 때 128에서 32로 이동합니다.그러나 Java에서 일반적으로 비트가 2의 보수로 해석될 때 -128에서 32로 이동합니다.
2의 이동 「2」 「2」)이 합니다.v >> n
)의이 값을 입력하면 비트는v
으로 n
비트 위치 및 v의 왼쪽 끝 비트의 복사본이 왼쪽에서 이동됩니다.
01111111 >> 2 = 00011111
10000000 >> 2 = 11100000
비트가 2의 보완 표현에 있는 숫자일 경우 산술적 오른쪽 시프트는 2의 거듭제곱으로 나누는 효과가 있습니다.이것은 가장 왼쪽 비트가 부호 비트이기 때문에 동작합니다.2의 거듭제곱으로 나누면 부호는 동일하게 유지되어야 한다.
Bitwise 및 Bit Shift 연산자에 대한 자세한 내용 보기
>> Signed right shift
>>> Unsigned right shift
비트 패턴은 왼쪽 피연산자에 의해 지정되며, 오른쪽 피연산자에 의해 이동되는 위치 수는 오른쪽 피연산자에 의해 지정됩니다. 없는 연산자 " " " " ">>>
0을 맨 왼쪽 위치로 옮깁니다.
, 「 」뒤의 가장 .>>
부호 확장자에 따라 다릅니다.
말하면 단히 in in in in in in in>>>
는 항상 0을 가장 왼쪽 위치로 이동합니다.>>
숫자 기호(음수 1, 양수 0)를 기준으로 이동한다.
예를 들어, 음수뿐만 아니라 양수로도 시도해 보세요.
int c = -153;
System.out.printf("%32s%n",Integer.toBinaryString(c >>= 2));
System.out.printf("%32s%n",Integer.toBinaryString(c <<= 2));
System.out.printf("%32s%n",Integer.toBinaryString(c >>>= 2));
System.out.println(Integer.toBinaryString(c <<= 2));
System.out.println();
c = 153;
System.out.printf("%32s%n",Integer.toBinaryString(c >>= 2));
System.out.printf("%32s%n",Integer.toBinaryString(c <<= 2));
System.out.printf("%32s%n",Integer.toBinaryString(c >>>= 2));
System.out.printf("%32s%n",Integer.toBinaryString(c <<= 2));
출력:
11111111111111111111111111011001
11111111111111111111111101100100
111111111111111111111111011001
11111111111111111111111101100100
100110
10011000
100110
10011000
연산자 「」 「」 「」).>>> N
하여 부호 끝을 채웁니다는 N개의 위치로 비트를 오른쪽으로 이동하여 부호 비트를 폐기하고 N개의 왼쪽 끝에 0을 채웁니다.예를 들어 다음과 같습니다.
-1 (in 32-bit): 11111111111111111111111111111111
a a a>>> 1
을 사용하다
2147483647: 01111111111111111111111111111111
연산자 「」 「」 「 」>> N
위치로 비트를 의 왼쪽 "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "1."예를 들어 다음과 같습니다.
-2 (in 32-bit): 11111111111111111111111111111110
a a a>> 1
을 사용하다
-1: 11111111111111111111111111111111
언급URL : https://stackoverflow.com/questions/2811319/difference-between-and
'programing' 카테고리의 다른 글
추가 Bootstrap popover가 프로그래밍 방식으로 vue-full-calendar. (0) | 2022.09.23 |
---|---|
Python site-packages 디렉토리의 위치를 찾으려면 어떻게 해야 합니까? (0) | 2022.09.23 |
두 날짜 사이의 일 수 찾기 (0) | 2022.09.23 |
MySQL 5.7 벌크 삽입(BLOB 열 포함) (0) | 2022.09.23 |
MySQL을 사용하는 EC2와 비교하여 Amazon RDS의 장점/제한사항은 무엇입니까? (0) | 2022.09.23 |