Konsep kod asal, kod songsang dan kod pelengkap adalah mudah difahami
Tetapi apabila saya temui bitwise "DAN, ATAU, TIDAK", saya hampir meletup di tempat kejadian~
Apabila saya menghadapi anjakan kiri dan kanan , Saya hanya melakukannya Ia seperti sekumpulan rambut~~~
Boleh sesiapa memberikan ringkasan ringkas?
Ini hanya pembuka selera Mereka tidak boleh digunakan sebagai penghalang jalan akan mengurangkan minat anda untuk belajar PHP gunakannya.
Logik DAN, logik ATAU, dan penafian logik ialah operasi yang layak pada boolean dan tergolong dalam kategori matematik diskret.
Bitwise DAN, bitwise ATAU, dan bitwise NOT ialah operasi pada bit komputer dan tergolong dalam kategori operasi bit binari komputer.
Logik dan kedua-duanya benar Perbezaan antara & dan && dalam c.
Logik ATAU Yang benar adalah perbezaan antara | dan ||.
Logik bukan palsu adalah benar dalam c! .
Bitwise DAN, bitwise ATAU, dan bitwise TIDAK melakukan operasi logik pada setiap bit mengikut peraturan di atas, dengan 1 mewakili benar dan 0 mewakili palsu.
Operasi bit dan 0&0=0; 0&1=0; 1&0=0;
Kegunaan khas "DAN operasi": (1) Jelas. Jika anda ingin mengosongkan sel kepada sifar, walaupun semua bit binarinya adalah 0, hanya DAN dengan nilai yang bitnya semuanya sifar, dan hasilnya akan menjadi sifar. (2) Ambil bit yang ditentukan dalam nomborKaedah: Cari nombor yang sepadan dengan bit yang X perlu diambil daripada bit yang sepadan ialah 1 dan bit yang selebihnya adalah sifar operasi pada nombor ini dan kedudukan yang dinyatakan dalam X. Contoh: Andaikan X=10101110, ambil 4 digit bawah Bitwise OR operator (|)Dua objek yang mengambil bahagian dalam operasi melakukan operasi "OR" berdasarkan bit binari. Peraturan operasi: 0|0=0; 0|1=1; 1|1=1; nilai ialah 1. Contohnya: 3|5 Iaitu 0000 0011 | 0000 0101 = 0000 0111 Oleh itu, 3|5 bernilai 7. Selain itu, nombor negatif mengambil bahagian dalam operasi bitwise ATAU dalam bentuk pelengkap. Fungsi khas "operasi ATAU": Biasa digunakan untuk menetapkan 1 kepada kedudukan data tertentu. Kaedah: Cari nombor yang sepadan dengan bit X untuk ditetapkan kepada 1. Bit nombor yang sepadan ialah 1 dan bit yang tinggal adalah sifar. Nombor ini adalah relatif kepada X atau menetapkan beberapa kedudukan dalam X kepada 1. Contoh: Tetapkan 4 bit bawah X=10100000 kepada 1 dan gunakan X | Operator XOR (^)Dua data yang mengambil bahagian dalam operasi melakukan operasi "XOR" berdasarkan bit binari. Peraturan operasi: 0^0=0; 0^1=1; 1^1=0; ( nilai adalah berbeza), hasil bit ini ialah 1, jika tidak ia adalah 0. Contohnya: 10^-9, iaitu 0000 1010 ^ 1111 0111 = 1111 1101 (kod pelengkap ialah 1000 0011, iaitu 10^-9 = -3ATAU Fungsi khas "). ": (1 ) Balikkan bit tertentu untuk mencari nombor yang sepadan dengan bit Contoh: X=10101110, balikkan 4 bit bawah(2) XOR dengan 0, kekalkan nilai asal, X ^ 0000 0000 = 1010 1110.
Tukar a dan b
Kaedah Satu Kaedah Dua
1.a=a^b 1.a= a-b
2.b=b^a 2.b= a+b
a=a^b 3.a= b-a Operator anjakan kiri (<<) mengalihkan semua bit perduaan operan ke kiri dengan bilangan bit tertentu (bit perduaan kiri dibuang dan bit kanan diisi dengan 0). Contoh: a = a << 2 Alihkan bit perduaan a ke kiri sebanyak 2 bit, tambah 0 ke kanan, Selepas beralih 1 bit ke kiri, a = a * 2; bit tinggi yang dibuang apabila beralih ke kiri tidak termasuk 1, maka setiap anjakan kiri adalah bersamaan dengan mendarab nombor dengan 2. 6. kiri, dan sebelah kanan dibuang. Setiap anjakan kanan operan dengan satu bit adalah bersamaan dengan membahagikan nombor dengan 2. Contohnya: a = a >> 2 Alihkan bit perduaan a ke kanan sebanyak 2 bit, tambah 0 atau 1 ke kiri, bergantung pada sama ada nombor yang dipindahkan itu positif atau negatif. Operator >> mengalihkan semua bit ungkapan1 ke kanan mengikut bilangan bit yang ditentukan oleh ungkapan2. Bit tanda ekspresi1 digunakan untuk mengisi bit kosong kiri selepas anjakan kanan. Bit yang dialihkan ke kanan dibuang. Sebagai contoh, selepas kod berikut dinilai, nilai temp ialah -4: var temp = -14 >> 2-14 (iaitu 11110010 dalam binari) dialihkan dua tempat ke kanan sama dengan - 4 (iaitu 11111100 dalam binari). Operator anjakan kanan yang tidak ditandatangani (>>>) >>> Operator mengalihkan setiap bit ungkapan1 ke kanan mengikut bilangan digit yang ditentukan oleh ungkapan2. Selepas anjakan kanan, bit kosong di sebelah kiri diisi dengan sifar. Bit yang dialihkan ke kanan dibuang.