Kotlin menyediakan beberapa fungsi (dalam bentuk infix) untuk menjalankan operasi bitwise dan bitshift. Pada artikel ini, Anda akan belajar melakukan operasi level bit di Kotlin dengan bantuan contoh.
Operator bitwise dan bit shift digunakan hanya pada dua tipe integral ( Int
dan Long
) untuk melakukan operasi level bit.
Untuk melakukan operasi ini, Kotlin menyediakan 7 fungsi menggunakan notasi infix.
1. atau
The or
Fungsi membandingkan bit yang sesuai dari dua nilai. Jika salah satu bitnya adalah 1, maka bitnya menjadi 1. Jika tidak, bitnya menjadi 0. Misalnya,
12 = 00001100 (Dalam Biner) 25 = 00011001 (Dalam Biner) Bitwise ATAU Operasi 12 dan 25 00001100 atau 00011001 ________ 00011101 = 29 (Dalam desimal)
Contoh: Bitwise atau Operation
fun main(args: Array) ( val number1 = 12 val number2 = 25 val result: Int result = number1 or number2 // result = number1.or(number2) println(result) )
Saat Anda menjalankan program, hasilnya adalah:
29
2. dan
The and
Fungsi membandingkan bit yang sesuai dari dua nilai. Jika kedua bit bernilai 1, maka akan dievaluasi ke 1. Jika salah satu bit bernilai 0, maka dievaluasi ke 0. Misalnya,
12 = 00001100 (Dalam Biner) 25 = 00011001 (Dalam Biner) Operasi Bit 12 dan 25 00001100 dan 00011001 ________ 00001000 = 8 (Dalam desimal)
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) )
Saat Anda menjalankan program, hasilnya adalah:
8
3. xor
The xor
Fungsi membandingkan bit yang sesuai dari dua nilai. Jika bit yang sesuai berbeda, ia memberikan 1. Jika bit yang sesuai sama, ia memberikan 0. Misalnya,
12 = 00001100 (Dalam Biner) 25 = 00011001 (Dalam Biner) Bitwise ATAU Operasi 12 dan 25 00001100 xor 00011001 ________ 00010101 = 21 (Dalam desimal)
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) )
Saat Anda menjalankan program, hasilnya adalah:
21
4. inv ()
Fungsi inv () membalikkan pola bit. Itu membuat setiap 0 hingga 1, dan setiap 1 hingga 0.
35 = 00100011 (Dalam Biner) Operasi komplemen Bitwise 35 00100011 ________ 11011100 = 220 (Dalam desimal)
Contoh: Pelengkap bitwise
fun main(args: Array) ( val number = 35 val result: Int result = number.inv() println(result) )
Saat Anda menjalankan program, hasilnya adalah:
-36
Mengapa kita mendapatkan output -36, bukan 220?
Itu karena kompiler menunjukkan komplemen 2 dari angka tersebut; notasi negatif dari bilangan biner.
Untuk bilangan bulat n apa pun, komplemen 2 dari n adalah -(n+1)
.
Komplemen Decimal Binary 2 --------- --------- ---------------------------- ----------- 0 00000000 - (11111111 + 1) = -00000000 = -0 (desimal) 1 00000001 - (11111110 + 1) = -11111111 = -256 (desimal) 12 00001100 - (11110011 +1) = -11110100 = -244 (desimal) 220 11011100 - (00100011 + 1) = -00100100 = -36 (desimal) Catatan: Overflow diabaikan saat menghitung komplemen 2.
Pelengkap bitwise dari 35 adalah 220 (dalam desimal). Pelengkap 2 dari 220 adalah -36. Oleh karena itu, outputnya adalah -36, bukan 220.
5. shl
The shl
pergeseran fungsi menggigit pola ke kiri dengan sejumlah bit tertentu, dan nol bit digeser ke posisi rendah-order.
212 (Dalam biner: 11010100) 212 shl 1 mengevaluasi ke 424 (Dalam biner: 110101000) 212 shl 0 mengevaluasi ke 212 (Dalam biner: 11010100) 212 shl 4 mengevaluasi ke 3392 (Dalam biner: 110101000000)
Contoh: Pergeseran kiri bitwise
fun main(args: Array) ( val number = 212 println(number shl 1) println(number shl 0) println(number shl 4) )
Saat Anda menjalankan program, hasilnya adalah:
424 212 3392
6. Shr
The shr
pergeseran fungsi menggigit pattery ke kanan dengan jumlah certin bit ditentukan.
212 (Dalam biner: 11010100) 212 shr 1 mengevaluasi ke 106 (Dalam biner: 01101010) 212 shr 0 bernilai 212 (Dalam biner: 11010100) 212 shr 8 bernilai 0 (Dalam biner: 00000000)
Jika angkanya adalah nomor bertanda komplemen 2, bit tanda digeser ke posisi orde tinggi.
fun main(args: Array) ( val number = 212 println(number shr 1) println(number shr 0) println(number shr 8) )
Saat Anda menjalankan program, outputnya adalah:
106 212 0
7. ushr
The ushr
pergeseran fungsi nol ke posisi paling kiri.
Contoh: Shift Kanan bertanda tangan dan tidak bertanda tangan
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) )
Saat Anda menjalankan program, hasilnya adalah:
2 2 -3 2147483645
Perhatikan, bagaimana fungsi shift kanan bertanda dan tidak bertanda bekerja berbeda untuk komplemen 2.
Pelengkap 2 dari 2147483645
adalah 3
.