^ 연산자는 Java에서 무엇을 합니까?
기능은 입니까?^
인 자바 (care) ( ( ( ( ( ( ( ( ( ( ( ( ( ( (?
이것을 시험해 보면:
int a = 5^n;
...이것이 나에게 준다:
0n = 5인 0을 반환합니다.
1n = 4인 1을 반환합니다.
이면 3n = 6이면 3n = 6이면 3으로 됩니다.
...그래서 제 생각엔 이건 지수화를 하지 않는 것 같아요.하지만 그건 뭐죠?
Java의 ^ 연산자
^
Java java java java"" ( " xor " ) 。
★★를 5^6
예를 들어 다음과 같습니다.
(decimal) (binary)
5 = 101
6 = 110
------------------ xor
3 = 011
다음으로 비트 단위(JLS 15.22.1) 및 논리 단위(JLS 15.22.2)의 진실 테이블을 나타냅니다.
^ | 0 1 ^ | F T
--+----- --+-----
0 | 0 1 F | F T
1 | 1 0 T | T F
간단히 말하면 xor를 "이것 또는 저것, 그러나 둘 다 아니다!"라고 생각할 수도 있습니다.
「 」를 참조해 주세요.
Java에서의 지수화
정수 지수에 대해서는 유감스럽게도 Java에는 이러한 연산자가 없습니다.(결과 캐스팅 대상)을 사용할 수 있습니다.int
( 한한 ( ( )
또한 기존의 비트 시프트 기술을 사용하여 몇 가지 2의 거듭제곱을 계산할 수도 있습니다.그것은,(1L << k)
의 k제곱은 2입니다.k=0..63
.
「 」를 참조해 주세요.
병합 메모: 이 답변은 인수를 사용하여 문자열을 변환하려는 다른 질문에서 병합되었습니다.
"8675309"
로로 합니다.int
하지 않고Integer.parseInt
^
(미국의는 OP를 계산하는 이었다.8*10^6 + 6*10^5 + 7*10^4 + 5*10^3 + 3*10^2 + 0*10^1 + 9*10^0 = 8675309
; 이 답변의 다음 부분에서는 이 태스크에 지수가 필요하지 않은 것에 대해 설명합니다.
호너의 계획
고객의 특정 요구에 부응하기 위해 실제로 10의 다양한 거듭제곱을 계산할 필요는 없습니다.단순할 뿐만 아니라 효율적인 호너 스킴을 사용할 수 있습니다.
당신은 이것을 개인적인 연습으로 하고 있기 때문에 자바 코드를 알려주지 않겠지만, 주요 아이디어는 다음과 같습니다.
8675309 = 8*10^6 + 6*10^5 + 7*10^4 + 5*10^3 + 3*10^2 + 0*10^1 + 9*10^0
= (((((8*10 + 6)*10 + 7)*10 + 5)*10 + 3)*10 + 0)*10 + 9
처음에는 복잡해 보일지 모르지만, 사실은 그렇지 않다.기본적으로 왼쪽에서 오른쪽으로 숫자를 읽고 지금까지의 결과에 10을 곱한 후 다음 숫자를 추가합니다.
표 형식:
step result digit result*10+digit
1 init=0 8 8
2 8 6 86
3 86 7 867
4 867 5 8675
5 8675 3 86753
6 86753 0 867530
7 867530 9 8675309=final
이미 많은 사람들이 지적했듯이, XOR 연산자입니다.또한 많은 사람들은 이미 지수화를 원한다면 Math.pow를 사용해야 한다고 지적했습니다.
될것요.^
는 비트 (bitwise operator로 중 입니다.
Operator Name Example Result Description
a & b and 3 & 5 1 1 if both bits are 1.
a | b or 3 | 5 7 1 if either bit is 1.
a ^ b xor 3 ^ 5 6 1 if both bits are different.
~a not ~3 -4 Inverts the bits.
n << p left shift 3 << 2 12 Shifts the bits of n left p positions. Zero bits are shifted into the low-order positions.
n >> p right shift 5 >> 2 1 Shifts the bits of n right p positions. If n is a 2's complement signed number, the sign bit is shifted into the high-order positions.
n >>> p right shift -4 >>> 28 15 Shifts the bits of n right p positions. Zeros are shifted into the high-order positions.
여기서부터.
이러한 연산자는 개별 비트가 플래그로 해석되어야 하는 정수를 읽고 쓸 필요가 있거나 정수 내의 특정 비트 범위가 특별한 의미를 가지며 이들 비트만 추출하려는 경우에 유용합니다.이러한 연산자를 사용하지 않고도 매일 많은 프로그래밍을 수행할 수 있지만, 비트 수준에서 데이터를 사용해야 하는 경우에는 이러한 연산자에 대한 충분한 지식이 매우 중요합니다.
비트 XOR입니다.연산자가 에 XOR이다.Java를 .Math.pow()
★★★★★★ 。
XOR 연산자 규칙 =>
0 ^ 0 = 0
1 ^ 1 = 0
0 ^ 1 = 1
1 ^ 0 = 1
4, 5, 6의 바이너리 표현:
4 = 1 0 0
5 = 1 0 1
6 = 1 1 0
이제 5와 4에서 XOR 연산을 수행합니다.
5 ^ 4 => 1 0 1 (5)
1 0 0 (4)
----------
0 0 1 => 1
유사하게,
5 ^ 5 => 1 0 1 (5)
1 0 1 (5)
------------
0 0 0 => (0)
5 ^ 6 => 1 0 1 (5)
1 1 0 (6)
-----------
0 1 1 => 3
비트 연산자입니다.
많은 사람들이 이미 그것이 무엇이고 어떻게 사용될 수 있는지에 대해 설명했지만 명백한 것 말고도 당신은 이 연산자를 사용하여 다음과 같은 많은 프로그래밍 기술을 할 수 있습니다.
- 부울 배열의 모든 요소를 XOR하면 배열에 홀수 개수의 참 요소가 있는지 알 수 있습니다.
- 홀수 회수를 반복하는 배열을 제외한 모든 숫자가 짝수 회수를 반복하는 배열이 있는 경우 모든 요소를 XOR하여 확인할 수 있습니다.
- 임시 변수를 사용하지 않고 값 스왑
- 1~n 범위에서 누락된 번호 찾기
- 네트워크를 통해 전송되는 데이터의 기본 검증.
이러한 많은 속임수는 bit wise 연산자를 사용하여 수행할 수 있습니다. 흥미로운 주제입니다.
XOR 연산자 규칙
0 ^ 0 = 0
1 ^ 1 = 0
0 ^ 1 = 1
1 ^ 0 = 1
비트 연산자는 비트에 대해 작동하며 비트 단위 연산을 수행합니다.a = 60 및 b = 13이라고 가정합니다. 이제 이진 형식에서는 다음과 같습니다.
a = 0011 1100
b = 0000 1101
a^b ==> 0011 1100 (a)
0000 1101 (b)
------------- XOR
0011 0001 => 49
(a ^ b) will give 49 which is 0011 0001
다른 사람들이 말했듯이, 그것은 비트의 XOR이다.수치를 소정의 거듭제곱으로 올리려면 , 를 사용합니다.a
는 숫자와 "" 입니다.b
힘
AraK의 링크는 exclusive-or의 정의를 가리킵니다.이것에 의해, 2개의 부울치에 대해서 이 함수가 어떻게 기능하는지가 설명됩니다.
누락된 정보는 이것이 2개의 정수(또는 정수형 값)에 적용되는 방법입니다.bitwise exclusive-or는 2개의 숫자에 대응하는 2진수 숫자의 쌍에 적용되며, 그 결과는 정수 결과로 재구성된다.
예제를 사용하려면:
- 5의 2진수 표현은 0101입니다.
- 4의 2진수 표현은 0100 입니다.
비트 단위 XOR를 정의하는 간단한 방법은 두 입력 번호가 다른 모든 위치에 1이 있다고 하는 것입니다.
4와 5의 경우 유일한 차이는 꼴찌입니다.
0101 ^ 0100 = 0001 (5 ^ 4 = 1) .
숫자를 이진 형식으로 쓸 때 다른 비트 값(1 ^ 0 = 1)에 대해 1을 생성하고 동일한 비트 값(0 ^ 0 = 0)에 대해 0을 생성하는 Java의 비트 xor 연산자입니다.
예:-
예제를 사용하려면:
5의 2진수 표현은 0101입니다.4의 2진수 표현은 0100 입니다.
Bitwise XOR를 정의하는 간단한 방법은 두 입력 번호가 다른 모든 위치에 1이 결과라고 하는 것입니다.
0101 ^ 0100 = 0001 (5 ^ 4 = 1) .
대신 Math.pow를 사용하여 인수를 수행할 수 있습니다.
https://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Math.html#pow%28double,%20double%29
다른 답변에서 이미 설명한 바와 같이 "Exclusive or (XOR)" 연산자입니다.자바에서의 비트 전송에 대한 자세한 내용은http://http://java.sun.com/docs/books/tutorial/java/nutsandbolts/op3.html 를 참조해 주세요.
xor 연산자를 사용하고 있기 때문입니다.
Java 또는 기타 언어에서는 ^는 bitwise xor이므로 물론,
10 ^ 1 = 11. 비트 연산자에 대한 자세한 정보
Java와 C#에는 전원 연산자가 없는 것이 흥미롭다.
다른 값(1 ^ 0 = 1)에 대해서는 1이 되고 같은 값(0 ^ 0 = 0)에 대해서는 0이 되는 Java의 비트 xor 연산자입니다.
^는 2진수(base-2와 같이) xor이며, 지수화(Java 연산자로 사용할 수 없음)가 아닙니다.지수화에 대해서는 java.lang을 참조하십시오.Math.pow().
XOR 연산자입니다.이것은 숫자에 대한 비트 연산을 수행하기 위해 사용됩니다.같은 비트로 xor 연산을 실행하면 0 XOR 0 / 1 XOR 1 이 됩니다.단, 어떤 비트가 다르면 결과는 1이 됩니다.따라서 5^3을 구하면 이 숫자 5, 6을 2진수 형식으로 볼 수 있습니다. 그러면 (101) XOR(110)이 되고 결과(011)의 소수점 표현은 3이 됩니다.
다른 답변과 더불어 캐럿 연산자는 부울 피연산자와 함께 사용할 수 있으며 피연산자가 다른 경우에만 true를 반환합니다.
System.out.println(true ^ true); // false
System.out.println(true ^ false); // true
System.out.println(false ^ false); // false
System.out.println(false ^ true); // true
Python과 같은 다른 언어에서는 10**2=100을 사용할 수 있습니다.
^ = (비트 단위 XOR)
묘사
Binary XOR Operator는 비트가 둘 다 아닌 하나의 피연산자에 설정된 경우 비트를 복사합니다.
예
(A ^ B)는 49 즉 0011 0001을 제공합니다.
언급URL : https://stackoverflow.com/questions/1991380/what-does-the-operator-do-in-java
'programing' 카테고리의 다른 글
약속을 사용하여 Vue 앱을 렌더링하고 사용자 입력을 기다립니다. (0) | 2022.07.03 |
---|---|
다중 응용 프로그램의 공유 저장소 Nuxt (0) | 2022.07.03 |
Vue 인스턴스에서 글로벌 믹스인 메서드를 사용하는 방법 (0) | 2022.07.03 |
Vuex의 확산 연산자가 babel로 올바르게 컴파일되지 않아 모듈 구축에 계속 실패함 (0) | 2022.07.03 |
Java에서 스레드를 올바르게 중지하려면 어떻게 해야 합니다. (0) | 2022.07.02 |