자바의 ^ 연산자
^
Java에서 배타적 연산자 ( "xor") 연산자입니다.
5^6
예를 들어 보자 .
(decimal) (binary)
5 = 101
6 = 110
------------------ xor
3 = 011
다음은 비트 단위 ( JLS 15.22.1 ) 및 논리 형 ( JLS 15.22.2 ) xor에 대한 진리표입니다 .
^ | 0 1 ^ | F T
--+----- --+-----
0 | 0 1 F | F T
1 | 1 0 T | T F
더 간단히 말하면, xor를 "this or that, but both !" 로 생각할 수도 있습니다 .
또한보십시오
자바 지수
정수 지수에 관해서는 불행히도 Java에는 그러한 연산자가 없습니다. 사용할 수 있습니다 double Math.pow(double, double)
( int
필요한 경우 결과 전송 ).
전통적인 비트 시프 팅 트릭을 사용하여 2의 거듭 제곱을 계산할 수도 있습니다. 즉, (1L << k)
의 k 승 2의 2 입니다 k=0..63
.
또한보십시오
병합 참고 :이 답변은프로그래밍 연습으로사용하지 않고문자열"8675309"
을변환하기 위해 지수를 사용하려는 다른 질문에서 병합되었습니다(지금부터 지수를 나타냅니다). OP의 의도는 계산하는 것이 었습니다. 이 답변의 다음 부분은이 작업에 지수가 필요하지 않다는 것을 설명합니다.int
Integer.parseInt
^
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