Jaką funkcję pełni ^
operator (karetka) w Javie?
Kiedy spróbuję:
int a = 5^n;
...to daje mi:
dla n = 5 zwraca 0
dla n = 4, zwraca 1
dla n = 6, zwraca 3
... więc myślę, że nie wykonuje potęgowania. Ale co to jest?
java
operators
exponentiation
joroj
źródło
źródło
^
operator nie jest przeznaczony do zestawu zasilania. Zamiast tego będziesz potrzebowaćMath.pow
. Zobacz odpowiedź wieloskładnikowy.^
dla potęgowania? To po prostu zdrowy rozsądek!). Eksploracja języka Java przez OP wymaga zachęcania.Odpowiedzi:
Operator ^ w Javie
^
w Javie jest operatorem wyłącznym lub („xor”).Weźmy
5^6
jako przykład:Ta tabela prawdy dla bitowego ( JLS 15.22.1 ) i logicznego ( JLS 15.22.2 ) xor:
Mówiąc prościej, możesz również myśleć o xor jako „tym czy innym, ale nie obu !”.
Zobacz też
Potęgowanie w Javie
Jeśli chodzi o potęgowanie liczb całkowitych, niestety Java nie ma takiego operatora. Możesz użyć
double Math.pow(double, double)
(rzutując wynik na,int
jeśli to konieczne).Możesz także użyć tradycyjnej sztuczki polegającej na przesuwaniu bitów, aby obliczyć niektóre potęgi dwóch. Oznacza to, że
(1L << k)
wynosi dwa do k- tej potęgi dlak=0..63
.Zobacz też
Schemat Hornera
Wychodząc naprzeciw konkretnym potrzebom, tak naprawdę nie musisz obliczać różnych mocy 10. Możesz użyć tak zwanego schematu Hornera , który jest nie tylko prosty, ale również wydajny.
Ponieważ robisz to jako ćwiczenie osobiste, nie podam kodu Java, ale oto główna idea:
Na początku może wydawać się skomplikowane, ale tak naprawdę nie jest. Zasadniczo czytasz cyfry od lewej do prawej i zwielokrotniasz dotychczasowy wynik przez 10 przed dodaniem kolejnej cyfry.
W formie tabeli:
źródło
Jak wiele osób już zauważyło, jest to operator XOR . Wiele osób już zauważyło, że jeśli chcesz potęgować, musisz użyć Math.pow .
Ale myślę, że warto również zauważyć, że
^
jest to tylko jedna z rodziny operatorów, które są wspólnie znane jako operatory bitowe:Od tutaj .
Operatory te mogą się przydać, gdy trzeba odczytywać i zapisywać liczby całkowite, w których poszczególne bity powinny być interpretowane jako flagi, lub gdy określony zakres bitów w liczbie całkowitej ma specjalne znaczenie i chcesz je wyodrębnić. Możesz robić wiele codziennego programowania bez konieczności korzystania z tych operatorów, ale jeśli kiedykolwiek będziesz musiał pracować z danymi na poziomie bitów, dobra znajomość tych operatorów jest nieoceniona.
źródło
Jest to bitowe XOR, Java nie ma operatora potęgowania, musiałbyś
Math.pow()
zamiast tego użyć .źródło
Reguła operatora XOR =>
Reprezentacja binarna 4, 5 i 6:
teraz wykonaj operację XOR na 5 i 4:
Podobnie,
źródło
Jest to
XOR
operator bitowy.źródło
Wiele osób już wyjaśniło, co to jest i jak można z niego korzystać, ale poza oczywistym faktem można użyć tego operatora do wykonania wielu sztuczek programistycznych, takich jak
Wiele takich sztuczek można wykonać za pomocą nieco mądrych operatorów, interesujący temat do zbadania.
źródło
Jak powiedzieli inni, to bitowe XOR. Jeśli chcesz podnieść liczbę do danej potęgi, użyj
Math.pow(a , b)
, gdziea
jest liczbą ib
potęgą.źródło
Reguła operatora XOR
Operator bitowy działa na bitach i wykonuje operacje krok po kroku. Załóżmy, że a = 60 ib = 13; teraz w formacie binarnym będą wyglądać następująco -
źródło
Łącze AraK wskazuje na definicję wyłączności-lub, która wyjaśnia, w jaki sposób ta funkcja działa dla dwóch wartości boolowskich.
Brakująca informacja dotyczy tego, w jaki sposób dotyczy to dwóch liczb całkowitych (lub wartości typu całkowitoliczbowego). Bitowe wykluczanie - lub jest stosowane do par odpowiednich cyfr binarnych w dwóch liczbach, a wyniki są ponownie składane w wynik liczby całkowitej.
Aby użyć swojego przykładu:
Prostym sposobem na zdefiniowanie bitowego XOR jest powiedzenie, że wynik ma 1 w każdym miejscu, w którym dwie liczby wejściowe różnią się.
W przypadku 4 i 5 jedyną różnicą jest ostatnie miejsce; więc
0101 ^ 0100 = 0001 (5 ^ 4 = 1).
źródło
Zamiast tego możesz użyć Math.pow:
https://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Math.html#pow%28double,%20double%29
źródło
Jak już stwierdzono w innych odpowiedziach, jest to operator „wyłączny” (XOR) . Aby uzyskać więcej informacji na temat operatorów bitów w Javie, zobacz: http://java.sun.com/docs/books/tutorial/java/nutsandbolts/op3.html
źródło
Jest to bitowy operator xor w Javie, który daje 1 dla innej wartości bitu (tj. 1 ^ 0 = 1) i 0 dla tej samej wartości bitu (tj. 0 ^ 0 = 0), gdy liczba jest zapisywana w postaci binarnej.
np .:
Aby użyć swojego przykładu:
Reprezentacja binarna liczby 5 to 0101. Reprezentacja binarna liczby 4 to 0100.
Prostym sposobem na zdefiniowanie bitowej wartości XOR jest powiedzenie, że wynik ma 1 w każdym miejscu, w którym dwie liczby wejściowe różnią się.
0101 ^ 0100 = 0001 (5 ^ 4 = 1).
źródło
Jest tak, ponieważ używasz operatora Xor.
W języku Java lub w jakimkolwiek innym języku ^ jest bitowe xor, więc oczywiście
10 ^ 1 = 11. więcej informacji o operatorach bitowych
Interesujące jest to, że Java i C # nie mają operatora mocy.
źródło
Jest to bitowy operator xor w Javie, który daje 1 dla innej wartości (tj. 1 ^ 0 = 1) i 0 dla tej samej wartości (tj. 0 ^ 0 = 0).
źródło
^ jest binarny (jak w base-2) xor, a nie potęgowanie (który nie jest dostępny jako operator Java). Aby dowiedzieć się więcej o potęgowaniu, zobacz java.lang.Math.pow ().
źródło
Jest to operator XOR. Służy do wykonywania operacji bitowych na liczbach. Zachowuje się tak, że gdy wykonujesz operację xor na tych samych bitach, powiedz 0 XOR 0/1 XOR 1, wynikiem jest 0. Ale jeśli któryś z bitów jest inny, to wynik wynosi 1. Więc kiedy zrobiłeś 5 ^ 3, to zrobiłeś może patrzeć na te liczby 5, 6 w postaci binarnej, a zatem wyrażenie staje się (101) XOR (110), co daje wynik (011), którego dziesiętna reprezentacja wynosi 3.
źródło
W innych językach, takich jak Python, możesz zrobić 10 ** 2 = 100, spróbuj.
źródło