Операции в языке Си
Над объектами в языке Си могут выполняться различные операции:
- операции присваивания;
- операции отношения;
- арифметические;
- логические;
- сдвиговые операции.
Результатом выполнения операции является число.
Операции могут быть бинарными или унарными. Бинарные операции выполняются над двумя объектами, унарные — над одним.
Операция присваивания
Операция присваивания обозначается символом = и выполняется в 2 этапа:
- вычисляется выражение в правой части;
- результат присваивается операнду, стоящему в левой части:
объект = выражение;
int a = 4; // переменной a присваивается значение 4
int b;
b = a + 2; // переменной b присваивается значение 6, вычисленное в правой части
В случае если объекты в левой и правой части операции присваивания имеют разные типы используется операция явного приведения типа.
объект = (тип)выражение;
float a = 241.5;
// Перед вычислением остатка от деления a приводится к целому типу
int b = ( int )a % 2; // b = 1
Операции отношения
Основные операции отношения:
Операции отношения используются при организации условий и ветвлений. Результатом этих операций является 1 бит, значение которого равно 1 , если результат выполнения операции — истина, и равно 0 , если результат выполнения операции — ложь.
Арифметические операции
Основные бинарные операции, расположенные в порядке уменьшения приоритета:
Основные унарные операции:
- ++ — инкрементирование (увеличение на 1);
- –– — декрементирование (уменьшение на 1);
- — — изменение знака.
Результат вычисления выражения, содержащего операции инкрементирования или декрементирования, зависит от того, где расположен знак операции (до объекта или после него). Если операция расположена до объекта, то сначала происходит изменение значения переменной на 1, а потом это значение используется для выполнения следующих операций. Если операция ++ или — расположена после переменной, то сначала выполняется операция, а потом значение переменной изменяется на 1.
int a = 2;
int b = 3;
int c;
c = a * ++b;
// c=8, поскольку в операции умножения уже b=4
int a = 2;
int b = 3;
int d;
d = a * b++;
// d=6, поскольку в операции умножения b=3, следующим действием будет b=4
Бинарные арифметические операции могут быть объединены с операцией присваивания:
- объект *= выражение; // объект = объект * выражение
- объект /= выражение; // объект = объект / выражение
- объект += выражение; // объект = объект + выражение
- объект -= выражение; // объект = объект — выражение
- объект %= выражение; // объект = объект % выражение
Логические операции
Логические операции делятся на две группы:
Условные логические операции чаще всего используются в операциях проверки условия if и могут выполняться над любыми объектами. Результат условной логической операции:
- 1 если выражение истинно;
- 0 если выражение ложно.
Вообще, все значения, отличные от нуля, интерпретируются условными логическими операциями как истинные.
Основные условные логические операции:
- && — И (бинарная) — требуется одновременное выполнение всех операций отношения;
- || — ИЛИ (бинарная) — требуется выполнение хотя бы одной операции отношения;
- ! — НЕ (унарная) — требуется невыполнение операции отношения.
Побитовые логические операции оперируют с битами, каждый из которых может принимать только два значения: 0 или 1.
Основные побитовые логические операции в языке Си:
- & конъюнкция (логическое И) — бинарная операция, результат которой равен 1 только когда оба операнда единичны (в общем случае — когда все операнды единичны);
- | дизъюнкция (логическое ИЛИ) — бинарная операция, результат которой равен 1 когда хотя бы один из операндов равен 1;
- ~ инверсия (логическое НЕ) — унарная операция, результат которой равен 0 если операнд единичный, и равен 1, если операнд нулевой;
- ^ исключающее ИЛИ — бинарная операция, результат которой равен 1, если только один из двух операндов равен 1 (в общем случае если во входном наборе операндов нечетное число единиц).
Для каждого бита результат выполнения операции будет получен в соответствии с таблицей.
| a | b | a & b | a | b | ~a | a ^ b |
| 0 | 0 | 0 | 0 | 1 | 0 |
| 0 | 1 | 0 | 1 | 1 | 1 |
| 1 | 0 | 0 | 1 | 0 | 1 |
| 1 | 1 | 1 | 1 | 0 | 0 |
Бинарная операция
Бина́рная (или двуме́стная) опера́ция — обобщение сложения, умножения, возведение в степень.
- 1 Определение
- 2 Замечание
- 3 Типы бинарных операций
- 3.1 Коммутативная операция
- 3.2 Ассоциативная операция
- 3.3 Альтернативная операция
- 5.1 Мультипликативная запись
- 5.2 Аддитивная запись
Определение [ ]
Бинарной операцией или двуме́стной опера́цией на множестве M называется отображение f : M × M → M , которое каждой упорядоченной паре элементов ( x , y ) ∈ M × M , называемых опера́ндами, ставит в соответствие некоторый элемент того же множества x f y , называемый результа́том.
Замечание [ ]
Бинарную операцию принято обозначать знаком действия, который ставится между операндами. Например, для бинарной операции ⋅ результат её применения к двум элементам x и y записывается в виде x ⋅ y .
Типы бинарных операций [ ]
Коммутативная операция [ ]
См. также основную статью: Коммутативная операция
Бинарная операция ⋅ называется коммутативной, если её результат не зависит от перестановки операндов, то есть
x ⋅ y = y ⋅ x , ∀ x , y ∈ M .
Ассоциативная операция [ ]
См. также основную статью: Ассоциативная операция
Бинарная операция ⋅ называется ассоциативной, если
( x ⋅ y ) ⋅ z = x ⋅ ( y ⋅ z ) , ∀ x , y , z ∈ M .
Для ассоциативной операции ⋅ результат вычисления x 1 ⋅ x 2 ⋅ … ⋅ x n \cdot x_\cdot \ldots \cdot x_> не зависит от порядка вычисления (расстановки скобок), и потому позволяется опускать скобки в записи. Для неассоциативной операции выражение x 1 ⋅ x 2 ⋅ … ⋅ x n \cdot x_\cdot \ldots \cdot x_> при n > 2 2> однозначно не определено.
Альтернативная операция [ ]
Бинарная операция ⋅ называется альтернати́вной если
Примеры [ ]
Примерами бинарных операций могут служить сложение, умножение и вычитание на множестве Записи [ ]
Мультипликативная запись [ ]
Если абстрактную бинарную операцию на M называют умноже́нием, то её результат для элементов x , y ∈ M называют их произведе́нием и обозначают x ⋅ y или x y . В этом случае нейтральный элемент e ∈ M , то есть элемент удовлетворяющий равенствам
x ⋅ e = e ⋅ x = x , ∀ x ∈ M ,
называется едини́чным элеме́нтом относительно выбранной бинарной операции.
Аддитивная запись [ ]
Если бинарную операцию называют сложе́нием, то образ пары элементов x , y ∈ M называют су́ммой и обозначают x + y . Обычно, если бинарную операцию называют сложением, то она предполагается коммутативной. Нейтральный элемент в аддитивной записи обозначают символом 0 , называют нулевы́м элеме́нтом и пишут
x + 0 = 0 + x = x , ∀ x ∈ M .
См. также [ ]
- арность
- унарная операция
- Литература [ ]
- Цыпкин А. Г. Справочник по математике для средних и учебных заведений. М.: Наука, 1988, с19, с430. ISBN 5-02-013792-8.
pl:Działanie dwuargumentowe sl:Dvočlena operacija
Задание 8Вопрос: Какие операции или операция относятся к бинарным?
Выберите несколько из 7 вариантов ответа:
1) *.
5) mod.
2) +.
6) — (изменение знака).
3) div.
7) -.
4)/.Напишите программу на Python, которая по введённому числу определит, какое сейчас время суток. Будем считать, что если введено число от 5 до 10, то эт … о утро, от 11 до 17, то день, с 18 до 22 – вечер, с 23 до 4 – ночь. Предусмотрите, что пользователь может ввести неверное число или вообще слово. Тогда ему стоит написать: Ошибка. Не забудьте, что в данной задаче числа – это тоже строки. Формат ввода Вводится строка. Формат вывода Если введено число от 5 до 10, то вывести Утро, от 11 до 17, то День, с 18 до 22 – Вечер, с 23 до 4 – Ночь. Если введено неверное число или слово, то вывести: Ошибка. Пример 1 Ввод Вывод 5 Утро Пример 2 Ввод Вывод 24 Ошибка Пример 3 Ввод Вывод Час дня Ошибка
Задание. Известны оценки каждого из 10 учеников по трем предметам. Вывести качество знаний по каждому предмету (Предмет — качество). Качество рассчит … ывается по формуле: (общее количество пятерок и четверок ) / общее количество учеников Написать краткую спецификацию, составить блок-схему процесса и написать программный код решения этой задачи.(Программа должна быть выполнена в IntelliJ IDEA. Язык: Java).
F = (-B ^ A) ^(Av B). если A=1, B=0. истенное
= Урок 3. Данi рiзних типів / Операції ділення Вкажи значення виразів. Python 37 // 5 = 37% 5 = 73 // 10 = 73 % 10 = 0 Введи відповіді. 29 // 6 = 29 … % 6 = 17// 2 = 17% 2 =
Задание. Найти все трехзначные простые числа (простым называется натуральное число большее 1, не имеющее других делителей, кроме единицы и самого себ … я) Написать краткую спецификацию, составить блок-схему процесса и написать программный код решения этой задачи.(Программа должна выполняться в IntelliJ IDEA. Язык: Java).
Какие операции или операция относятся к бинарным
Начиная с этого шага мы начинаем знакомиться с основными операциями, используемыми в C++.
- бинарные операции : сложение (+), вычитание (бинарный минус)(-), умножение (*), деление (/), остаток от деления (%);
- унарные операции : операция изменения знака (унарный минус) (-), операция увеличения (++), операция уменьшения (—)
В языке C++ принято правило : если делимое и делитель имеют тип int , то деление производится нацело, то есть дробная часть результата отбрасывается . Как обычно, в выражениях операции умножения, деления и нахождения остатка выполняются раньше сложения и вычитания. Для изменения порядка действий используйте скобки.
Пример 1. Что напечатает следующая программа?
x = 3+4%5-6; cout x = -3*4%-6/5; cout x = (7+6)%5/2; cout >Текст этой программы можно взять здесь.
Результат работы программы:
11 1 0 1
Комментарии . Воспользуемся таблицей приоритетов операций, двигаясь от высших к низшим. Мы будем пользоваться скобками, чтобы показать порядок применения операций к операндам.
Присваивание x = -3+4*5-6; . Наивысший приоритет имеет унарная операция «-«: x=(-3)+4*5-6 . Следующий по порядку приоритет имеет операция «*»: x=(-3)+(4*5)-6 . Обе операции «+» и «-» имеют одинаковый приоритет, выполняются справа налево: сначала «+» , потом «-«: x=(((-3)+(4*5))-6) . Внизу таблицы приоритетов находится операция » изнутри»:
(x=((3+4)-6) (x=(7-6)) (x=1) 1
Присваивание x = -3*4%-6/5; . Это выражение сложнее предыдущего, но строгое следование правилу приоритетов операций и порядку их выполнения позволяет «распутать» и его: x=(-3)*4%(-6)/5 .
Операции «*», «%», «/» имеют один и тот же приоритет и выполняются слева направо:x=((-3)*4)%(-6)/5 x=((-3)*4)%(-6)/5 x=(((-3)*4)%(-6))/5 x=((((-3)*4)%(-6))/5) (x=((((-3)*4)%(-6))/5))
Начинаем изнутри вычислять выражение:
(x=(((-3*4)%-6)/5)) (x=((-12%-6)/5)) (x=(0/5)) (x=0) 0
Присваивание x = (7+6)%5/2; . Мы не всегда жестко связаны с заранее известными приоритетами операций; если порядок выполнения нужно изменить или просто «прояснить» структуру выражения, можно использовать скобки.
Вначале вычисляются подвыражения в скобках. Далее, как и раньше, следуем правилу приоритетов операций и порядку их выполнения:x=((7+6)%5)/2 x=(((7+6)%5)/2) (x=(((7+6)%5)/2))
Начинаем изнутри вычислять выражение:
(x=(13%5)/2) (x=(3/2))
Так как при операциях с целыми числами дробная часть операнда отбрасывается, то на следующем шаге вычислений получаем выражение (x=1) , значением которого является 1.
На следующем шаге мы продолжим изучение арифметических операций, в частности рассмотрим особенности использования операций инкремента (++) и декремента (—).