Rumah > Soal Jawab > teks badan
String strs = "13634393448";
Bytes.toBytes((short) (strs.hashCode() & 0x7fff));
这里面的 & 0x7fff 是什么意思呢?
巴扎黑2017-04-18 09:45:40
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.
怪我咯2017-04-18 09:45:40
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
, iaitu 0x3bb98000
.
melakukan operasi "0x7fff
dan " dengan , yang bermaksud mengambil tiga digit terakhir 0x3bb98000
Keputusan soalan ini secara semulajadi 0
.
PHPz2017-04-18 09:45:40
0x7fff = 0111 1111 1111 1111
& ialah operasi DAN
jadi operasi ini adalah untuk mengambil 15 digit terakhir perwakilan binari nombor "13634393448"