Fungsi apa yang ^
dilayani oleh operator (tanda sisipan) di Jawa?
Ketika saya mencoba ini:
int a = 5^n;
... itu memberi saya:
untuk n = 5, mengembalikan 0
untuk n = 4, mengembalikan 1
untuk n = 6, mengembalikan 3
... jadi saya kira itu tidak melakukan eksponensial. Tapi lalu apa?
java
operators
exponentiation
joroj
sumber
sumber
^
operator tidak dimaksudkan untuk power set. Anda akan membutuhkannyaMath.pow
. Lihat jawaban polygenelubricant.^
untuk eksponensial? Itu hanya akal sehat!). Eksplorasi OP tentang bahasa Jawa perlu digalakkan.Jawaban:
^ Operator di Jawa
^
di Jawa adalah operator eksklusif-atau ("xor").Mari kita ambil
5^6
contoh:Ini tabel kebenaran untuk bitwise ( JLS 15.22.1 ) dan logis ( JLS 15.22.2 ) xor:
Lebih sederhana, Anda juga dapat menganggap xor sebagai "ini atau itu, tetapi tidak keduanya !".
Lihat juga
Eksponen di Jawa
Sedangkan untuk exponentiation integer, sayangnya Java tidak memiliki operator seperti itu. Kamu bisa memakai
double Math.pow(double, double)
(casting hasilnyaint
jika perlu).Anda juga dapat menggunakan trik pergeseran bit tradisional untuk menghitung beberapa kekuatan dua. Artinya,
(1L << k)
dua ke k pangkat -th untukk=0..63
.Lihat juga
Skema Horner
Mengatasi kebutuhan spesifik Anda, Anda sebenarnya tidak perlu menghitung berbagai kekuatan 10. Anda dapat menggunakan apa yang disebut skema Horner , yang tidak hanya sederhana tetapi juga efisien.
Karena Anda melakukan ini sebagai latihan pribadi, saya tidak akan memberikan kode Java, tapi inilah ide utamanya:
Pada awalnya mungkin terlihat rumit, tetapi sebenarnya tidak. Anda pada dasarnya membaca angka dari kiri ke kanan, dan Anda mengalikan hasilnya sejauh ini dengan 10 sebelum menambahkan angka berikutnya.
Dalam bentuk tabel:
sumber
Seperti yang telah ditunjukkan oleh banyak orang, ini adalah operator XOR . Banyak orang juga sudah menunjukkan bahwa jika Anda ingin eksponensial maka Anda perlu menggunakan Math.pow .
Tetapi saya pikir ini juga berguna untuk dicatat bahwa
^
hanya salah satu dari keluarga operator yang secara kolektif dikenal sebagai operator bitwise:Dari sini .
Operator ini dapat berguna ketika Anda perlu membaca dan menulis ke bilangan bulat di mana bit individual harus ditafsirkan sebagai bendera, atau ketika rentang bit tertentu dalam bilangan bulat memiliki makna khusus dan Anda ingin mengekstrak hanya itu. Anda dapat melakukan banyak pemrograman setiap hari tanpa perlu menggunakan operator ini, tetapi jika Anda harus bekerja dengan data pada level bit, pengetahuan yang baik dari operator ini sangat berharga.
sumber
Ini XOR bitwise, Java tidak memiliki operator eksponensial, Anda harus menggunakan
Math.pow()
sebagai gantinya.sumber
Aturan operator XOR =>
Representasi biner dari 4, 5 dan 6:
sekarang, lakukan operasi XOR pada 5 dan 4:
Demikian pula,
sumber
Ini adalah
XOR
operator bitwise.sumber
Banyak orang sudah menjelaskan tentang apa itu dan bagaimana itu dapat digunakan tetapi selain dari yang jelas Anda dapat menggunakan operator ini untuk melakukan banyak trik pemrograman seperti
Banyak trik semacam itu dapat dilakukan dengan menggunakan operator yang sedikit bijaksana, topik yang menarik untuk dijelajahi.
sumber
Seperti yang orang lain katakan, itu XOR bitwise. Jika Anda ingin menaikkan angka ke daya yang diberikan, gunakan
Math.pow(a , b)
, di manaa
angka danb
daya.sumber
Aturan operator XOR
Operator bitwise bekerja pada bit dan melakukan operasi bit-by-bit. Asumsikan jika a = 60 dan b = 13; sekarang dalam format biner, mereka akan menjadi sebagai berikut -
sumber
Tautan AraK menunjuk ke definisi eksklusif-atau, yang menjelaskan bagaimana fungsi ini bekerja untuk dua nilai boolean.
Sepotong informasi yang hilang adalah bagaimana ini berlaku untuk dua bilangan bulat (atau nilai tipe bilangan bulat). Bitwise eksklusif-atau diterapkan pada pasangan digit biner yang sesuai dalam dua angka, dan hasilnya dirakit kembali menjadi hasil integer.
Untuk menggunakan contoh Anda:
Cara sederhana untuk mendefinisikan bitor XOR adalah dengan mengatakan hasil memiliki 1 di setiap tempat di mana dua nomor input berbeda.
Dengan 4 dan 5, satu-satunya perbedaan adalah di tempat terakhir; begitu
0101 ^ 0100 = 0001 (5 ^ 4 = 1).
sumber
Anda dapat menggunakan Math.pow sebagai gantinya:
https://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Math.html#pow%28double,%20double%29
sumber
Seperti yang sudah dinyatakan oleh jawaban lain, itu adalah operator "eksklusif atau" (XOR) . Untuk informasi lebih lanjut tentang operator bit di Jawa, lihat: http://java.sun.com/docs/books/tutorial/java/nutsandbolts/op3.html
sumber
Ini adalah operator Bitwise xor di java yang menghasilkan 1 untuk nilai bit yang berbeda (yaitu 1 ^ 0 = 1) dan 0 untuk nilai bit yang sama (yaitu 0 ^ 0 = 0) ketika suatu angka ditulis dalam bentuk biner.
mis .: -
Untuk menggunakan contoh Anda:
Representasi biner dari 5 adalah 0101. Representasi biner dari 4 adalah 0100.
Cara sederhana untuk mendefinisikan Bitwise XOR adalah dengan mengatakan hasil memiliki 1 di setiap tempat di mana dua nomor input berbeda.
0101 ^ 0100 = 0001 (5 ^ 4 = 1).
sumber
Itu karena Anda menggunakan operator xor.
Dalam java, atau hampir semua bahasa lain, ^ bitwise xor, jadi tentu saja,
10 ^ 1 = 11. info lebih lanjut tentang operator bitwise
Sangat menarik bagaimana Java dan C # tidak memiliki operator listrik.
sumber
Ini adalah operator bitor xor di java yang menghasilkan 1 untuk nilai yang berbeda (yaitu 1 ^ 0 = 1) dan 0 untuk nilai yang sama (yaitu 0 ^ 0 = 0).
sumber
^ adalah biner (seperti pada basis-2) xor, bukan eksponensial (yang tidak tersedia sebagai operator Java). Untuk eksponensial, lihat java.lang.Math.pow ().
sumber
Ini adalah operator XOR. Ini digunakan untuk melakukan operasi bit pada angka. Ini memiliki perilaku sehingga ketika Anda melakukan operasi xor pada bit yang sama mengatakan 0 XOR 0/1 XOR 1 hasilnya adalah 0. Tetapi jika ada bit yang berbeda maka hasilnya adalah 1. Jadi ketika Anda melakukan 5 ^ 3 maka Anda dapat melihat angka-angka ini 5, 6 dalam bentuk biner mereka dan dengan demikian ungkapan menjadi (101) XOR (110) yang memberikan hasil (011) yang representasi desimalnya adalah 3.
sumber
Dalam bahasa lain seperti Python, Anda dapat melakukan 10 ** 2 = 100, cobalah.
sumber