0x07fff=0111111111111111 Apakah yang akan berlaku jika anda mengendalikan perkara ini? Bit pertama ialah 0, dan bit lain kekal tidak berubah.
Bergantung pada jenis data, bit yang lebih tinggi dalam jenis data yang ditandatangani mewakili simbol Dalam kes ini, operasi AND digunakan untuk mendapatkan nilai mutlak, iaitu, untuk mendapatkan 15 bit yang berguna.
Kadangkala carian bitwise atau operasi bitwise adalah lebih pantas.
Ada satu lagi situasi di mana ia digunakan untuk menunjuk-nunjuk.
String.hashCode() dikira seperti berikut: s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1] Anda memberikan 13634393448 dan hasil Kod cincangnya ialah 1002012672, iaitu 0x3bb98000. melakukan operasi "0x7fff dan " dengan , yang bermaksud mengambil tiga digit terakhir 0x3bb98000 Keputusan soalan ini secara semulajadi 0.
0x07fff=0111111111111111
Apakah yang akan berlaku jika anda mengendalikan perkara ini? Bit pertama ialah 0, dan bit lain kekal tidak berubah.
Bergantung pada jenis data, bit yang lebih tinggi dalam jenis data yang ditandatangani mewakili simbol Dalam kes ini, operasi AND digunakan untuk mendapatkan nilai mutlak, iaitu, untuk mendapatkan 15 bit yang berguna.
Kadangkala carian bitwise atau operasi bitwise adalah lebih pantas.
Ada satu lagi situasi di mana ia digunakan untuk menunjuk-nunjuk.
Nilai pulangan
String.hashCode()
dikira seperti berikut:s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
Anda memberikan 13634393448 dan hasil Kod cincangnya ialah
1002012672
, iaitu0x3bb98000
.melakukan operasi "
0x7fff
dan " dengan , yang bermaksud mengambil tiga digit terakhir0x3bb98000
Keputusan soalan ini secara semulajadi0
.0x7fff = 0111 1111 1111 1111
& ialah operasi DAN
jadi operasi ini adalah untuk mengambil 15 digit terakhir perwakilan binari nombor "13634393448"
0x Tukar perenambelasan
Satu
&
ialah operasi AND bitwise, dua&
ialah logik DAN