Kotlin в IntelliJ IDEA Kotlin змінні Kotlin типи даних Kotlin операції з числами Kotlin умовні вирази Kotlin умовні конструкції Kotlin цикли Kotlin послідовності Kotlin масиви Kotlin функціональне програмування Kotlin змінна кількість параметрів. Vararg Kotlin повернення результату. оператор return Kotlin однорядкові і локальні функції Kotlin перевантаження функцій Kotlin Лямбда-вирази Kotlin функції вищого порядку Kotlin Анонімні функції Kotlin ООП Класи і об'єкти Kotlin ООП властивості Kotlin ООП конструктор Kotlin ООП функції в класах Kotlin ООП Пакети та імпорт Kotlin ООП модифікатори видимості Kotlin ООП вкладені класи Kotlin ООП інтерфейси Kotlin ООП спадкування Kotlin ООП Перевизначення методів і властивостей Kotlin ООП Абстрактні класи та методи Kotlin ООП Data-класи Kotlin ООП перерахування enums Kotlin ООП Null і nullable-типи Kotlin ООП Обробка винятків Kotlin ООП перетворення типів Kotlin ООП Інфіксна функція Kotlin ООП функції розширення Kotlin ООП Узагальнені класи і функції Kotlin ООП обмеження узагальнень Kotlin ООП Варіантність, коваріантність і контраваріантність Kotlin Колекції. Змінювані і незмінні колекції Kotlin Колекції. LIST список Kotlin Колекції. Set Kotlin Колекції. Map

Kotlin операції з числами


Операції з числами


арифметичні операції

Kotlin підтримує базові арифметичні операції:

+ (Додавання): повертає суму двох чисел.

val x = 5
val y = 6
val z = x + y
println(z)      // z = 11

- (віднімання): повертає різницю двох чисел.

val x = 5
val y = 6
val z = x - y  // z = -1

* (Множення): повертає твір двох чисел.

val x = 5
val y = 6
val z = x * y  // z = 30

/ (Ділення): повертає приватне двох чисел.

val x = 60
val y = 10
val z = x / y  // z = 6

% : Повертає залишок від цілочисельного ділення двох чисел.

val x = 65
val y = 10
val z = x % y  // z = 5

++ (інкремент): збільшує значення на одиницю. Префіксний інкремент повертає збільшене значення:

var x = 5
val y = ++x
println(x)      // x = 6
println(y)      // y = 6

Постфіксний інкремент повертає значення до збільшення на одиницю:

var x = 5
val y = x++
println(x)      // x = 6
println(y)      // y = 5

- (декремент): зменшує значення на одиницю. Префіксний декремент повертає зменшене значення:

var x = 5
val y = --x
println(x)      // x = 4
println(y)      // y = 4

Постфіксний декремент повертає значення до зменшення на одиницю:

var x = 5
val y = x--
println(x)      // x = 4
println(y)      // y = 5

Також є ряд операцій присвоєння, які поєднують арифметичні операції і привласнення:

  • + = : Присвоювання після складання. Присвоює лівому операнду суму лівого і правого операндів: A + = B еквівалентно    A = A + B

  • - = : присвоювання після вирахування. Присвоює лівому операнду різниця лівого і правого операндів: A - = B еквівалентно A = A - B

  • * = : Присвоювання після множення. Присвоює лівому операнду твір лівого і правого операндів: A * = B еквівалентно         A = A * B

  • / = : Присвоювання після поділу. Присвоює лівому операнду приватне лівого і правого операндів: A / = B еквівалентно         A = A / B

  • % = : Присвоювання після поділу по модулю. Присвоює лівому операнду залишок від цілочисельного ділення лівого операнда на правий: A% = B еквівалентно A = A% B


Побітові оператори

Ряд операцій виконується над двійковими разрядмі числа. Тут важливо розуміти, як виглядає двійкове подання тих чи інших чисел. Зокрема, число 4 в двійковому вигляді - 100, а число 15 - 1111.

Є такі побітові оператори (вони застосовуються тільки до даних типів Int і Long):

shl : зсув бітів числа зі знаком вліво

val z = 3 shl 2     // z = 11 << 2 = 1100 
println(z)          // z = 12
val d = 0b11 shl 2
println(d)          // d = 12

В даному випадку число зсувається на два розряду вліво, тому справа число в двійковому вигляді доповнюється двома нулями. Тобто в двійковому вигляді 3 являє 11. Зрушуємо на два розряду вліво (доповнюємо справа двома нулями) і отримуємо 1100, тобто в десятковій системі число 12. shr : зсув бітів числа зі знаком вправо

val z = 12 shr 2     // z = 1100 >> 2 = 11
println(z)          // z = 3
val d = 0b1100 shr 2
println(d)          // d = 3

Число 12 зсувається на два розряду вправо, тобто два числа праворуч факіческі відкидаємо і отримуємо число 11, тобто 3 в десятич системі. ushr : зсув бітів беззнакового числа вправо

val z = 12 ushr 2     // z = 1100 >> 2 = 11
println(z)          // z = 3

and : побітова операція AND (логічне множення або сполучення). Ця операція порівнює відповідні розряди двох чисел і повертає одиницю, якщо ці розряди обох чисел рівні 1. Інакше повертає 0.

val x = 5   // 101
val y = 6   // 110
val z = x and y     // z = 101 & 110 = 100
println(z)          // z = 4
 
val d = 0b101 and 0b110
println(d)          // d = 4

or : побітова операція OR (логічне додавання або диз'юнкція). Ця операція порівнюють два соответствуюших розряду обох чисел і повертає 1, якщо хоча б один розряд дорівнює 1. Якщо обидва розряду рівні 0, то повертається 0.

val x = 5   // 101
val y = 6   // 110
val z = x or y     // z = 101 | 110 = 111
println(z)         // z = 7
 
val d = 0b101 or 0b110
println(d)          // d = 7

xor : побітова операція XOR. Порівнює два розряду і повертає 1, якщо один з розрядів дорівнює 1, а інший дорівнює 0. Якщо обидва розряду рівні, то повертається 0.

val x = 5   // 101
val y = 6   // 110
val z = x xor y     // z = 101 ^ 110 = 011
println(z)         // z = 3
 
val d = 0b101 xor 0b110
println(d)          // d = 3

inv : логічне заперечення або інверсія - інвертує біти числа

val b = 11  // 1011
val c = b.inv()
println(c)      // -12

Наш партнер:
beta test mp3 playlist downloader