Operasi Kotlin Bitwise dan Bitshift (Dengan Contoh)

Kotlin menyediakan beberapa fungsi (dalam bentuk infix) untuk melakukan operasi bitwise dan bitshift. Dalam artikel ini, anda akan belajar melakukan operasi tahap bit di Kotlin dengan bantuan contoh.

Pengendali bitwise dan bit shift hanya digunakan pada dua jenis integral ( Intdan Long) untuk melakukan operasi tahap bit.

Untuk melakukan operasi ini, Kotlin menyediakan 7 fungsi menggunakan notasi infix.

1. atau

Yang orfungsi membandingkan bit sepadan bagi dua nilai. Sekiranya salah satu daripada bit adalah 1, ia memberikan 1. Jika tidak, ia memberikan 0. Contohnya,

 12 = 00001100 (Dalam Binari) 25 = 00011001 (Dalam Binari) Bitwise ATAU Operasi 12 dan 25 00001100 atau 00011001 ________ 00011101 = 29 (Dalam perpuluhan)

Contoh: Bitwise atau Operasi

 fun main(args: Array) ( val number1 = 12 val number2 = 25 val result: Int result = number1 or number2 // result = number1.or(number2) println(result) )

Semasa anda menjalankan program, outputnya adalah:

 29

2. dan

Yang andfungsi membandingkan bit sepadan bagi dua nilai. Sekiranya kedua-dua bit adalah 1, ia dinilai menjadi 1. Sekiranya salah satu bit adalah 0, ia dinilai hingga 0. Contohnya,

 12 = 00001100 (Dalam Binari) 25 = 00011001 (Dalam Binari) Operasi Bit 12 dan 25 00001100 dan 00011001 ________ 00001000 = 8 (Dalam perpuluhan)

Contoh: Bitwise dan Operasi

 fun main(args: Array) ( val number1 = 12 val number2 = 25 val result: Int result = number1 and number2 // result = number1.and(number2) println(result) )

Semasa anda menjalankan program, outputnya adalah:

 8

3. xor

Yang xorfungsi membandingkan bit sepadan bagi dua nilai. Sekiranya bit sepadan berbeza, ia memberi 1. Sekiranya bit sepadan sama, ia memberikan 0. Contohnya,

 12 = 00001100 (Dalam Binari) 25 = 00011001 (Dalam Perduaan) Bitwise ATAU Operasi 12 dan 25 00001100 xor 00011001 ________ 00010101 = 21 (Dalam perpuluhan)

Contoh: Operasi Bitwise xor

 fun main(args: Array) ( val number1 = 12 val number2 = 25 val result: Int result = number1 xor number2 // result = number1.xor(number2) println(result) )

Semasa anda menjalankan program, outputnya adalah:

 21

4. inv ()

Fungsi inv () membalikkan corak bit. Ia menjadikan setiap 0 hingga 1, dan setiap 1 hingga 0.

 35 = 00100011 (Dalam Binari) Pelengkap Bitwise Operasi 35 00100011 ________ 11011100 = 220 (Dalam perpuluhan)

Contoh: Pelengkap bitwise

 fun main(args: Array) ( val number = 35 val result: Int result = number.inv() println(result) )

Semasa anda menjalankan program, outputnya adalah:

 -36

Mengapa kita mendapat output -36 dan bukannya 220?

Ini kerana penyusun menunjukkan pelengkap nombor 2; notasi negatif bagi nombor perduaan.

Untuk bilangan bulat n, pelengkap n 2 adalah -(n+1).

 Pelengkap Perpuluhan Perduaan 2 --------- --------- ---------------------------- ----------- 0 00000000 - (11111111 + 1) = -00000000 = -0 (perpuluhan) 1 00000001 - (11111110 + 1) = -11111111 = -256 (perpuluhan) 12 00001100 - (11110011 +1) = -11110100 = -244 (perpuluhan) 220 11011100 - (00100011 + 1) = -00100100 = -36 (perpuluhan) Catatan: Limpahan diabaikan semasa mengira pelengkap 2.

Pelengkap bitwise 35 ialah 220 (dalam perpuluhan). Pelengkap 2 dari 220 ialah -36. Oleh itu, output adalah -36 dan bukannya 220.

5. shl

The shlperubahan fungsi menggigit corak ke kiri dengan jumlah tertentu bit dinyatakan, dan sifar bit dipindahkan ke dalam kedudukan yang rendah-perintah.

 212 (Dalam binari: 11010100) 212 shl 1 menilai menjadi 424 (Dalam binari: 110101000) 212 shl 0 menilai hingga 212 (Dalam binari: 11010100) 212 shl 4 menilai hingga 3392 (Dalam binari: 110101000000)

Contoh: Pergeseran kiri bitwise

 fun main(args: Array) ( val number = 212 println(number shl 1) println(number shl 0) println(number shl 4) )

Semasa anda menjalankan program, outputnya adalah:

 424 212 3392

6. shr

The shrperubahan fungsi bit pattery ke kanan dengan jumlah certin bit dinyatakan.

 212 (Dalam binari: 11010100) 212 shr 1 menilai hingga 106 (Dalam binari: 01101010) 212 shr 0 menilai hingga 212 (Dalam binari: 11010100) 212 shr 8 menilai menjadi 0 (Dalam binari: 00000000)

Sekiranya nombor itu adalah nombor pelengkap 2 yang ditandatangani, bit tanda dialihkan ke kedudukan pesanan tinggi.

 fun main(args: Array) ( val number = 212 println(number shr 1) println(number shr 0) println(number shr 8) )

Semasa anda menjalankan program, ouput akan menjadi:

 106 212 0

7. ushr

The ushrperubahan fungsi sifar ke dalam kedudukan yang paling kiri.

Contoh: Shift Kanan yang ditandatangani dan tidak ditandatangani

 fun main(args: Array) ( val number1 = 5 val number2 = -5 // Signed right shift println(number1 shr 1) // Unsigned right shift println(number1 ushr 1) // Signed right shift println(number2 shr 1) // Unsigned right shift println(number2 ushr 1) )

Semasa anda menjalankan program, outputnya adalah:

 2 2 -3 2147483645

Perhatikan, bagaimana fungsi shift kanan yang ditandatangani dan tidak ditandatangani berfungsi berbeza untuk pelengkap 2.

Pelengkap 2 2147483645adalah 3.

Artikel menarik...