Сложение, вычитание и другая математика в Kotlin
Проще всего разобраться с операциями можно с помощью арифметики. Операция сложения берет два числа и преобразует их в сумму. Операция вычитания берет два числа и преобразует их в разность. Во всех приложениях вы найдете простую арифметику — от подсчета количества лайков до расчета правильного размера и положения кнопки или окна — числа и правда везде!
Содержание статьи
- Простые математические операции в Kotlin
- Десятичные числа в Kotlin
- Операция для получения остатка в Kotlin
- Операции смещения в Kotlin
- Порядок операций в Kotlin
В этом разделе вы узнаете о различных арифметических операциях, которые предлагает Kotlin. В следующих уроках мы разберем операции для типов, отличных от чисел.
Простые математические операции в Kotlin
Все операции в Kotlin используют символ, известный как оператор, для указания типа осуществляемой операции. Рассмотрим четыре арифметические операции, с которым вы знакомы с первого класса: сложение, вычитание, умножение и деление.
Для данных операций в Kotlin используются следующие операторы:
- Сложение:
+
- Вычитание:
-
- Умножение:
*
- Деление:
/
Данные операторы используются следующим образом:
2 + 6 10 — 2 2 * 4 24 / 3
2 + 6 10 — 2 2 * 4 24 / 3 |
Каждая из данных строчек является выражением. У выражения есть значение. В данных случаях у всех четырех выражений одинаковые значения: 8
. Вы набираете код для выполнения операций по аналогии с написанием примеров на бумаге.
В IDE вы увидите значения выражений в выводе на консоли с помощью команды println():
Если хотите, можете убрать пробелы возле оператора:
Разницы нет. Вы можете даже использовать варианты с пробелами и без вперемежку. К примеру:
2+6 // OK 2 + 6 // OK 2 +6 // OK 2+ 6 // OK
2+6 // OK 2 + 6 // OK 2 +6 // OK 2+ 6 // OK |
Однако зачастую удобнее читать выражения с пробелами возле оператора.
Десятичные числа в Kotlin
Во всех операциях выше использовались целые числа, которые относятся к типу integer. Однако не все числа целые.
Рассмотрим следующий пример:
22 / 7
22 / 7 |
Результатом данной операции будет число 3
. Это потому что, если вы используете в выражении только целые числа, Kotlin сделает результат также целым числом. В данном случае результат округляется до ближайшего целого числа.
Вы можете указать Kotlin, что нужно использовать десятичные числа, записав их в следующей форме:
22.0 / 7.0
22.0 / 7.0 |
На этот раз результатом будет число 3.142857142857143
.
Операция для получения остатка % в Kotlin
Четыре операции, с которыми мы работали до сих пор, легко понять, потому что вы с ними хорошо знакомы в жизни. В Kotlin также есть более сложные операции, которые вы можете использовать. Это стандартные математические операции, только менее распространенные. Рассмотрим их.
Сначала разберем операцию остатка, или операцию по модулю. При делении числителя на знаменатель — результатом будет целое число, а также остаток. Этот остаток и является результатом операции по модулю. Например, 10 по модулю 3 равно 1, потому что 3 трижды переходит в 10 с остатком 1.
В Kotlin оператором остатка является символ %
, который используется следующим образом:
28 % 10
28 % 10 |
В данном случае результатом будет число 8, которое является остатком при делении 28 на 10. Если вам нужно посчитать то же самое, используя десятичные числа, это можно сделать следующим образом:
28.0 % 10.0
28.0 % 10.0 |
Результат идентичен % без десятичных чисел, что можно увидеть на выводе при использовании указателя формата:
println(«%. 0f».format(28.0 % 10.0))
println(«%.0f».format(28.0 % 10.0)) |
Операции смещения в Kotlin
Операции правого и левого смещения (Shift) принимают двоичную форму десятичного числа и смещают цифры налево или направо соответственно. Затем они возвращают десятичную форму нового двоичного числа.
К примеру, десятичное число 14 в бинарном виде будет состоять из восьми цифр — 00001110
. Смещение на два пункта влево приведет к числу 00111000
, которое равно 56 в десятичной системе.
Далее дана схема того, что происходит во время операции смещения:
Цифры, которые приходят на замену пустым местам, становятся 0. Отсеченные числа будут потеряны. Смещение вправо аналогично, но цифры сдвигаются в правую часть. Функции Kotlin для данных двух операций являются следующими:
- Смещение влево:
shl
- Смещение вправо:
shr
Это инфиксные функции, которые помещаются между операндами, чтобы вызов функции выглядел как операция.
Далее дан пример:
1 shl 3 32 shr 2
1 shl 3
32 shr 2 |
Оба значения равны 8.
Одна из причин использования смещений — облегчить умножение или деление на числа во второй степени. Обратите внимание, что сдвиг влево на единицу — это то же самое, что умножение на два, сдвиг влево на два — это то же самое, что умножение на четыре и так далее. Со смещением вправо ситуация аналогична.
Раньше код часто использовал этот трюк, потому что сдвиг битов для CPU намного проще, чем сложная арифметика умножения и деления. Следовательно, код был быстрее при использовании смещения. Однако в наши дни процессоры намного быстрее, и компиляторы могут даже преобразовывать умножение и деление на числа во второй степени в сдвиги.
Порядок выполнения операций в Kotlin
Высока вероятность, что при вычислении значений вам нужно будет использовать много различных операций. Далее дан пример того, как это можно сделать в Kotlin:
((8000 / (5 * 10)) — 32) shr (29 % 5)
((8000 / (5 * 10)) — 32) shr (29 % 5) |
Обратите внимание на использование скобок, у которых в Kotlin две цели: сделать код понятным для чтения и устранить неоднозначность.
Рассмотрим пример:
350 / 5 + 2
350 / 5 + 2 |
Результат будет равен 72 (350 делится на 5, а потом прибавляется 2) или 50 (350 делится на 7)? Те, кто хорошо учился в школе, наверняка с уверенностью воскликнут «72»! И будут абсолютно правы!
Kotlin использует так называемый приоритет операторов. Оператор деления (
) имеет более высокий приоритет, чем оператор сложения (+
), поэтому в этом примере код сначала выполняет операцию деления.
Если вы хотите, чтобы Kotlin сначала выполнял сложение, то есть возвращал 50, вы можете использовать круглые скобки, например:
350 / (5 + 2)
350 / (5 + 2) |
Правила приоритета аналогичны тому, что вы изучали в школе по математике. У умножения и деления более высокий, чем у сложения и вычитания.
НОУ ИНТУИТ | Лекция | Особенности представления чисел в ЭВМ
< Дополнительный материал || Лекция 4: 123
Аннотация: Представление информации в компьютере. Целые числа. Вещественные числа. Арифметические и побитовые операторы языка Java. Числа произвольной длины и точности.
Ключевые слова: машинный аналог, Java, константы, множества, информация, двоичное представление, оперативная память, внешняя память, бит, количество информации, байт, килобайт, kbyte, мегабайт, гигабайт, gbyte, tbyte, ASCII, information, interchange, KOI8-R, представление, двоичный дополнительный код, система счисления, позиционная система счисления, значение, двоичная система счисления, восьмеричная система счисления, , единица, знаковый бит, Дополнение, пересечение, длина, прямой, полнота вещественных чисел, число с плавающей точкой, точность, диапазон, мантиса, нормализованное число, экспонента, расстояние, nan, класс, абсолютная величина числа, коэффициенты, вызов метода, выражение, сложение, вычитание, умножение, деление, остаток, инкремент, декремент, операции, операнд, битовые операции, аргумент, целое число, длинная арифметика
intuit.ru/2010/edi»>Как уже отмечалось ранее, множествам целых и действительных чисел в большинстве языков программирования соответствуют их машинные аналоги. В случае языка Java используемые в программах переменные величины и константы типов int и double принимают значения из множеств и соответственно. В этом параграфе мы разберемся с тем, как именно устроены эти множества, и каковы последствия того, что программы оперируют не с настоящими числами, а с элементами указанных множеств. Однако сначала — некоторые напоминания об информации вообще и ее представлении в ЭВМ.Представление информации в компьютере
Любая информация (числовая, текстовая, звуковая, графическая и т.д.) в компьютере представляется (кодируется) в так называемой двоичной форме. Как оперативная, так и внешняя память, где и хранится вся информация, могут рассматриваться, как достаточно длинные последовательности из нулей и единиц. Под внешней памятью подразумеваются такие носители информации, как магнитные и оптические диски, ленты и т. п.
Байта достаточно для хранения 256 различных значений, что позволяет размещать в нем любой из алфавитно-цифровых символов, если только мы можем ограничиться языками с небольшими алфавитами типа русского или английского. Первые 128 символов (занимающие семь младших бит) стандартизированы с помощью кодировки ASCII (American Standart Code for Information Interchange). Хуже обстоит дело с кодировками русского текста (символы русского алфавита расположены во второй половине таблицы из 256 символов) — их несколько, а наиболее распространенные из них сейчас две — Windows-1251 и KOI8-R.
Для кодирования всех возможных символов, используемых народами мира, одного байта мало — необходимо использовать два последовательных (стандарт Unicode). Именно так и поступают при хранении символьных ( char ) значений в языке Java.
Полезно знать, что . Учитывая, что в книге среднего размера около 300000 букв, легко подсчитать, что, даже не используя никаких средств сжатия информации, на жестком диске современного персонального компьютера емкостью в 20 гигабайт можно разместить большую библиотеку из почти 70000 книг.
Целые числа
К целочисленным типам в языке Java относятся byte, short, int и long. Для хранения значений этих типов на любом компьютере отводится один, два, четыре и восемь байт соответственно. При этом применяется представление чисел в так называемом двоичном дополнительном коде.
Напомним, что используемая нами обычная система счисления является позиционной с основанием 10. Это значит, что в ней все натуральные числа представляются с помощью десяти цифр (от нуля до девяти включительно), а значение каждой из цифр числа зависит от позиции: самая правая цифра означает число единиц ( ), вторая — десятков ( ), третья — сотен ( ) и так далее.
В -ичной системе счисления все точно также, только число 10 в предыдущем абзаце нужно всюду заменить на . Наряду с двоичной системой, в которой только две цифры (0 и 1), в информатике часто применяются восьмеричная с цифрами от нуля до 7 и шестнадцатеричная. В последнем случае в качестве цифр от десяти до пятнадцати используются буквы от до соответственно.
При записи положительных целых чисел в системе счисления с основанием (на компьютере ) все их множество оказывается состоящим из элементов вида
где величины для всех из диапазона от до нуля — это цифры -значного числа в -ичной системе счисления.
Перейдем теперь к вопросу представления отрицательных чисел. Для определенности рассмотрим тип byte, в котором любое число занимает ровно восемь бит. Из записи в двоичной системе счисления равенства легко найти, какой вид должно иметь неизвестное нам пока двоичное представление xxxxxxxx числа :
xxxxxxxx + 00000001 = 00000000
Ясно, что на месте символов xxxxxxxx должно быть расположено число 11111111. Правильным результатом при этом, конечно, следовало бы считать 100000000, а не 00000000, но ведь мы имеем дело с типом byte и, так как результат обязан разместиться в байте, единица «исчезает».
Итак, число должно кодироваться как 11111111. Дальнейшее уже совсем просто: для получения нужно уменьшить на единицу, что даст 11111110 ; число представляется как 11111101 и т.д.
Отрицательные числа всегда имеют в своем двоичном представлении единицу в самом старшем разряде, который поэтому называют знаковым, а абсолютная величина кодируемого числа получается как двоичное дополнение остальных бит (нули нужно заменить на единицы и наоборот), увеличенное на один.
Легко видеть, что при этом самым маленьким отрицательным числом, которое принадлежит типу byte, является число (двоичное представление 10000000 ), а самым большим — число 127 (представление 01111111 ). Все представимые числа (а их 256) в данном случае могут быть получены как пересечение двух множеств: множества всех целых чисел и отрезка . Интересным является следующее наблюдение: если число 01111111 увеличить на единицу, то получится 10000000, что означает следующее: !
Итак, множество элементов типа byte можно представлять себе в виде свернутого в кольцо отрезка . Принципиально ничего не меняется и для типов short, int и long — увеличивается только длина отрезка, который вырезается из действительной прямой перед сворачиванием его в кольцо. Минимальные и максимальные представимые значения для каждого из этих типов в языке Java определены, как значения констант MIN_VALUE и MAX_VALUE в классах java. lang.Short, java.lang.Integer и java.lang.Long соответственно.
То, что для элементов множества , являющегося машинным аналогом , нарушено фундаментальное свойство целых чисел , способно привести к различным невероятным на первый взгляд результатам, однако гораздо более странные вещи происходят при работе с вещественными числами.
Дальше >>
< Дополнительный материал || Лекция 4: 123
математических операторов Java и математический класс в Java
Поиск
В этом руководстве по программированию на Java мы рассмотрим различные математические операторы, доступные в Java, и способы их использования для выполнения математических уравнений. Мы также коснемся некоторых более сложных тем, таких как приоритет операторов и ассоциативность. К концу этого руководства по Java вы должны хорошо понимать, как работать с математическими операторами в Java и использовать класс Java.
Введение в операторы в Java
Операторы — одна из наиболее распространенных функций языка программирования. Они позволяют программистам выполнять математические, логические и другие операции с данными.
Операторы Java можно разделить на три категории: арифметические , логические и реляционные . Арифметические операторы включают: сложение (+) , вычитание (-) , умножение (*) и деление (/) . К логическим операторам относятся: И (&&) , ИЛИ (||) и НЕ (!) .
Прочтите: Советы по повышению производительности в приложениях Java
Понимание математических операторов Java
Математические операторы — это символы, указывающие, какую операцию выполнять в математическом выражении. Это символы, которые выполняют арифметические операции над двумя операндами. Операнд может быть константой, выражением или переменной. Когда выражение оценивается, тип данных результата зависит от типа данных операндов выражения.
Математические операторы Java можно разделить на следующие категории:
- Арифметические операции: Сложение ( + ), вычитание ( – ), умножение ( * ), деление (/), остаток ( % 5 () и унарный минус).
- Логические операторы: И () , ИЛИ () и НЕ () .
- Реляционные операторы: Больше чем ( > ), Меньше ( < ) и Равно ( = ).
- Остаток %
Арифметические операторы Java
Шесть арифметических операторов в Java:
- Дополнение (+)
- Вычитание (-)
- Умножение (*)
- Отдел (/)
- Модуль (%)
- Увеличение (++) и уменьшение (–)
Логические операторы Java
Логические операторы используются для объединения условных операторов. Вы можете использовать их, когда хотите принять несколько решений на основе набора условий. Они оценивают несколько условий и возвращают одно логическое значение.
В Java есть три логических оператора:
&& — это оператор AND , который возвращает true , если все условия в списке параметров истинны, и false иначе
|| — это оператор ИЛИ , который возвращает true , если хотя бы одно из условий в списке параметров равно true , и false в противном случае.
! — это оператор НЕ , который возвращает true , если его единственным условием является false , и наоборот.
Чтение: Работа с ValueType в Java
Операторы присваивания Java
Операторы присваивания (представлены с помощью = знак ) позволяют присвоить значение переменной. В выражении левый операнд должен быть переменной, а правый операнд может быть переменной, константой или даже другим выражением.
В следующем фрагменте кода Java показано, как использовать оператор присваивания в Java:
int x = 123; интервал у = а + б; String str = "Привет, мир!";
Унарные, бинарные и тернарные операторы в Java
Язык программирования Java поддерживает множество различных операторов. Они оцениваются слева направо и имеют то, что известно как приоритет правил (означает, в каком порядке выполняются вычисления; операторы с более высоким приоритетом оцениваются первыми).
Операторы также могут быть перегружены , что означает, что вы можете переопределить их для использования в создаваемых вами классах. В зависимости от количества операндов оператор может быть унарным (работает с одним операндом) или бинарным (работает с двумя операндами). Операторы инкремент/декремент ( ++ – ), инвертируют ( — ) и побитовое дополнение ( ~ ) являются примерами унарных операторов. Арифметические ( + , – , * , /, % ) и реляционные (, = ) операторы являются примерами бинарных операторов.
Тернарные операторы — это те, которые работают с тремя операндами. Когда тернарный оператор применяется в выражении, он оценивается как true или false в зависимости от того, истинно ли указанное условие.
В следующем примере кода Java показано, как можно использовать тернарный оператор в Java:
String message = (x >= 10) ? «Больше или равно 10» : «Меньше 10»;
Прочитано: Как использовать списки в приложениях Java с графическим интерфейсом
Что такое приоритет математических операторов Java?
Порядок, в котором оцениваются операторы, определяется приоритетом операторов. Когда выражение включает несколько операторов с разным приоритетом, сначала оцениваются операторы с наивысшим приоритетом, а затем операторы с наименьшим приоритетом. Например, операции умножения, деления и по модулю имеют более высокий приоритет, чем операции сложения и вычитания.
При использовании операторов Java необходимо учитывать два важных момента:
- Операции умножения, деления и по модулю имеют приоритет над операциями сложения и вычитания.
- Операторы «плюс» и «минус» имеют одинаковый приоритет. Операторы с одинаковым приоритетом оцениваются слева направо.
Вот несколько примеров кода, иллюстрирующих, как мы можем работать с математическими операторами в Java.
целочисленный результат = 2 + 3 * 4; // Это выражение оценивается как 14 (т. е. 2 + 12)
Обратите внимание, что если операторы имеют одинаковый приоритет, они оцениваются слева направо. Например:
int результат = 2 - 3 + 4; // Это выражение оценивается как 3 (т. е. 2 – 3 + 4)
Программирование класса Math в Java
Класс Math содержит методы для нахождения максимума и минимума двух чисел, округления числа, нахождения квадратного корня числа, проверки того, является ли число большим или равным другому числу, и больше.
Класс Math является конечным классом и содержит только статические методы. Это означает, что вы не можете расширять класс Math и его нельзя использовать в иерархии наследования. В классе Math нет конструкторов. В нем есть только статические поля (несколько констант) и статические методы (операции над числами).
Методы класса Math в Java обеспечивают поддержку основных числовых операций. К таким операциям относятся сложение, вычитание, умножение и деление и даже тригонометрические и логарифмические функции. Он предоставляет несколько методов, таких как min() , max() , avg() , round() , ceil() , floor() , abs() , 02 sin(), 90s () , tan() и так далее.
Рассмотрим несколько примеров использования класса Java Math:
int x = 5; инт у = 6; Math.min(x,y) — этот код вернет 5, потому что это меньшее из значений x и y. Math.max(x,y) — этот код вернет 6, потому что это большее из значений x и y. Math.sqrt(x) — этот код вернет 2, потому что 2 * 2 = 4, что округляется до 5 (квадратный корень из 5).
Заключительные мысли о математических операторах Java и математическом классе
Java поставляется с набором встроенных математических операторов, которые можно использовать для выполнения как основных, так и сложных математических операций. В этом руководстве по программированию на Java мы рассмотрели, как мы можем работать с математическими операторами и классом Math в Java, а также примеры кодирования, иллюстрирующие их использование.
Дополнительные руководства по программированию на Java и руководства для разработчиков.
Похожие истории
Арифметические операторы в Java-программировании
Операторы в Java
В этом уроке мы рассмотрим, что такое арифметические операторы, и изучим различные типы арифметических операторов с помощью примеров.
Что такое арифметические операторы
Арифметические операторы в Java используются для выполнения арифметических или математических операций. операции над операндами.
Арифметические операторы бывают двух типов:
- Унарные операторы — Операторы, которые оперируют или работают с одним операндом, называются унарными. операторы. Например: (++, — ).
- Бинарные операторы — Операторы, которые оперируют или работают с двумя операндами, называются бинарными. операторы. Например: ( + , – , * , / , % ).
Унарные операторы
Существует 2 типа унарных операторов:
- Оператор приращения ++
- Оператор декремента —
Оператор приращения
++Оператор приращения используется для увеличения значения переменной на 1.
Существует 2 типа операторов приращения:
- Pre-Increment
- Постинкремент
Pre-Increment
Оператор Pre-Increment используется для увеличения значения переменной на 1, прежде чем использовать его в выражении. В Pre-Increment значение сначала увеличивается а затем используется внутри выражения. Давайте посмотрим на пример для большего понимания.
Пример
int x=5, y; у=++х; // значение x увеличивается на 1 и затем сохраняется в y
В приведенном выше примере значение x , равное 5, является первым увеличьте на 1, а затем сохраните в x . Таким образом, результат y равен 6.
Post-Increment
Оператор Post-Increment используется для увеличения значения переменная на 1 после полного выполнения выражения, в котором используется постинкремент. В Post-Increment значение сначала используется в выражении, а затем увеличивается на 1. Давайте посмотрим на пример для большего понимания.
Пример
int x=5, y; у=х++; // значение x сначала сохраняется в y, а затем увеличивается на 1
В приведенном выше примере сначала сохраняется значение x , равное 5 в y и после этого увеличилось на 1. Таким образом, результат y равен 5, а значение из x становится 6.
Оператор уменьшения
—Оператор уменьшения используется для уменьшения значения переменной на 1.
Существует 2 типа операторов декремента:
- Предекремент
- Постдекремент
Pre-Decrement
Оператор Pre-Decrement используется для уменьшения значения переменной на 1, прежде чем использовать его в выражении. В Pre-Decrement значение сначала уменьшается на 1, а затем используется внутри выражения. Давайте посмотрим на пример для большего понимания.
Пример
int x=5, y; у=--х; // значение x уменьшается на 1 и затем сохраняется в y
В приведенном выше примере значение x , равное 5, является первым уменьшите на 1, а затем сохраните в x . Таким образом, результат y равен 4.
Постдекремент
Оператор постдекремента используется для уменьшения значения переменная на 1 после полного выполнения выражения, в котором используется постдекремент. В пост-декременте значение сначала используется в выражении, а затем уменьшается на 1. Давайте посмотрим на пример для большего понимания.
Пример
int x=5, y; у=х--; // значение x сначала сохраняется в y, а затем уменьшается на 1
В приведенном выше примере сначала сохраняется значение x , равное 5 в y и после этого уменьшилось на 1. Таким образом, результат y равен 5, а значение из x становится 4.
Бинарные операторы
Существует 5 типов бинарных операторов:
- + Дополнение
- — Вычитание
- * Умножение
- / Отдел
- % Модуль
+ Оператор сложения
+ Оператор сложения используется для сложения значения двух или более переменные. Давайте посмотрим на пример для большего понимания.
Пример
int x=5, y=2, z; г=х+у; // значение z становится 7
В приведенном выше примере значение x и y добавляется первым а затем сохраняется в z . Таким образом, результат z равен 7.
— Оператор вычитания
— Оператор вычитания используется для вычитания значения двух или более переменных. Давайте посмотрим на пример для большего понимания.
Пример
int x=5, y=2, z; г=х-у; // значение z становится 3
В приведенном выше примере значение y вычитается из x , а окончательный результат сохраняется в з . Таким образом, результат z равен 3.
* Оператор умножения
* Оператор умножения используется для умножения значения две и более переменных. Давайте посмотрим на пример для большего понимания.
Пример
int x=5, y=2, z; г=х*у; // значение z становится равным 10
В приведенном выше примере значение x и y является первым умножается и затем сохраняется в z . Итак, результат z равно 10.
/ Оператор деления
/ Оператор деления используется для деления значения на два или более переменные, и в результате деления возвращается частное. Давайте посмотрим пример для большего понимания.
Пример
int x=5, y=2, z; г=х/у; // значение z становится равным 2, что является частным
В приведенном выше примере значение x и y является первым разделить, а затем сохранить частное в z . Таким образом, результат z равен 2.