programing

^ 연산자는 Java에서 무엇을 합니까?

prostudy 2022. 7. 3. 09:04
반응형

^ 연산자는 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

반응형