Kotlin Bitwise ve Bitshift İşlemleri (Örneklerle)

Kotlin, bitsel ve bitshift işlemi gerçekleştirmek için çeşitli işlevler (infix biçiminde) sağlar. Bu yazıda örnekler yardımıyla Kotlin'de bit seviyesinde işlem yapmayı öğreneceksiniz.

Bit düzeyinde işlemler gerçekleştirmek için yalnızca iki integral tipinde ( Intve Long) bitsel ve bit kaydırma operatörleri kullanılır .

Bu işlemleri gerçekleştirmek için Kotlin, infix gösterimini kullanarak 7 işlev sağlar.

1. veya

orFonksiyon iki değerleri karşılık gelen bit karşılaştırır. Bitlerden herhangi biri 1 ise 1 verir. Değilse 0 verir. Örneğin,

 12 = 00001100 (İkili Olarak) 25 = 00011001 (İkili Olarak) Bitsel VEYA 12 ve 25 İşlemleri 00001100 veya 00011001 ________ 00011101 = 29 (Ondalık olarak)

Örnek: Bitsel veya İşlem

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

Programı çalıştırdığınızda, çıktı:

 29

2. ve

andFonksiyon iki değerleri karşılık gelen bit karşılaştırır. Her iki bit de 1 ise, 1 olarak değerlendirilir. Bitlerden herhangi biri 0 ise, 0 olarak değerlendirilir. Örneğin,

 12 = 00001100 (İkili Olarak) 25 = 00011001 (İkili Olarak) 12 ve 25 Bit İşlemi 00001100 ve 00011001 ________ 00001000 = 8 (Ondalık olarak)

Örnek: Bitsel ve İşlem

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

Programı çalıştırdığınızda, çıktı:

 8

3. xor

xorFonksiyon iki değerleri karşılık gelen bit karşılaştırır. Karşılık gelen bitler farklıysa 1 verir. Karşılık gelen bitler aynıysa 0 verir. Örneğin,

 12 = 00001100 (İkili Olarak) 25 = 00011001 (İkili Olarak) Bitsel VEYA 12 ve 25 İşlemleri 00001100 xor 00011001 ________ 00010101 = 21 (Ondalık olarak)

Örnek: Bitsel xor İşlemi

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

Programı çalıştırdığınızda, çıktı:

 21

4. inv ()

İnv () işlevi bit desenini tersine çevirir. Her 0'dan 1'e ve her 1'den 0'a yapar.

 35 = 00100011 (İkili Olarak) Bitsel tamamlayıcı 35'in Bitsel tümleme İşlemi 00100011 ________ 11011100 = 220 (Ondalık olarak)

Örnek: Bitsel tamamlayıcı

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

Programı çalıştırdığınızda, çıktı:

 -36

Neden 220 yerine -36 çıktı alıyoruz?

Bunun nedeni, derleyicinin bu sayının 2'ye tümleyenini gösteriyor olmasıdır; ikili sayının negatif gösterimi.

Herhangi bir n tamsayısı için, 2'nin n'nin tamamlayıcısı olacaktır -(n+1).

 Ondalık İkili 2'nin tamamlayıcısı --------- --------- ---------------------------- ----------- 0 00000000 - (11111111 + 1) = -00000000 = -0 (ondalık) 1 00000001 - (11111110 + 1) = -11111111 = -256 (ondalık) 12 00001100 - (11110011 +1) = -11110100 = -244 (ondalık) 220 11011100 - (00100011 + 1) = -00100100 = -36 (ondalık) Not: 2'nin tamamlayıcısı hesaplanırken taşma ihmal edilir.

35'in bitsel tamamlayıcısı 220'dir (ondalık olarak). 2'nin 220'nin tamamlayıcısı -36'dır. Dolayısıyla çıktı 220 yerine -36'dır.

5. shl

shlİşlev kaymalar belirlenen bit belirli sayıda sola desen bit, ve sıfır bit düşük sıralı pozisyonlara kaydırılır.

 212 (İkili: 11010100) 212 shl 1 424 olarak değerlendirilir (İkili olarak: 110101000) 212 shl 0 212 olarak değerlendirilir (İkili: 11010100) 212 shl 4 3392 olarak değerlendirilir (İkili olarak: 110101000000)

Örnek: Bit düzeyinde sola kaydırma

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

Programı çalıştırdığınızda, çıktı:

 424 212 3392

6. shr

shrİşlev kaymalar belirlenen bit certin sayısına göre sağa pattery bit.

 212 (İkili: 11010100) 212 shr 1, 106 olarak değerlendirilir (İkili olarak: 01101010) 212 shr 0, 212 olarak değerlendirilir (İkili: 11010100) 212 shr 8, 0 olarak değerlendirilir (İkili olarak: 00000000)

Sayı, 2'nin tamamlayıcı işaretli bir sayısıysa, işaret biti, yüksek dereceli konumlara kaydırılır.

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

Programı çalıştırdığınızda, çıktı:

 106 212 0

7. ushr

ushrFonksiyon kaymalar en soldaki pozisyona sıfır.

Örnek: imzalı ve imzasız Sağ Shift

 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) )

Programı çalıştırdığınızda, çıktı:

 2 2-3 2147483645

İşaretli ve işaretsiz sağa kaydırma işlevinin 2'nin tamamlayıcısı için nasıl farklı çalıştığına dikkat edin.

Arasında 2'ye tümleyen 2147483645olduğunu 3.

Ilginç makaleler...