Операции целочисленной арифметики



К операциям целочисленной арифметики относятся:

· целочисленное деление /;

· остаток от деления %.

При целочисленном делении операция / возвращает целую часть частного (дробная часть отбрасывается), а операция % – остаток от деления. Ниже приведены примеры этих операций

11 % 4 = 3

11 / 4 = 2

7 % 3 = 1

7 / 3 = 2

26 / 5 = 5

26 % 5 = 1


Операции битовой арифметики

Во всех операциях битовой арифметики действия происходят над двоичным представлением целых чисел. К операциям битовой арифметики относятся следующие операции С++.

Арифметическое И (&). Оба операнда переводятся в двоичную систему, затем над ними происходит логическое поразрядное умножение операндов по следующим правилам.

1 & 1 = 1 1 & 0 = 0 0 & 1 =0 0 & 0 = 0

Рассмотрим пример использования арифметического И.

#include <stdio.h>

int main ()

{

int A, B;

A=13;

B=23;

printf("\n%d\n", A & B)

}

Этот участок программы работает следующим образом. Число А=13 и В=23 переводятся в двоичное представление 0000000000001101 и 0000000000010111. Затем над ними поразрядно выполняется логическое умножение.

& 0000000000001101

0000000000010111

0000000000000101

Результат переводится в десятичную систему счисления, в нашем случае будет число 5. Таким образом, 13 & 23 = 5.

Арифметическое ИЛИ (|). Здесь также оба операнда переводятся в двоичную систему, после чего над ними происходит логическое поразрядное сложение операндов по следующим правилам.

1 | 1 = 1 1 | 0 = 1 0 | 1 =1 0 | 0 = 0

Например:

#include <stdio.h>

int main ()

{

int A, B;

A=13;

B=23;

printf("\n%d\n", A | B)

}

Над двоичным представлением значений А и В выполняется логическое сложение.

| 0000000000001101

0000000000010111

0000000000011111

После перевода результата в десятичную систему имеем 13 | 23 =31.

Арифметическое исключающее ИЛИ (^). Здесь также оба операнда переводятся в двоичную систему, после чего над ними происходит логическая поразрядная операция ^ по следующим правилам.

1 ^ 1 = 0 1 ^ 0 = 1 0 ^ 1 =1 0 ^ 0 = 0

Арифметическое отрицание (~). Эта операция выполняется над одним операндом. Применение операции not вызывает побитную инверсию двоичного представления числа. Например, рассмотрим операцию not 13.

0000000000001101

~a 1111111111110010

После перевода результата в десятичную систему получаем ~13=-14.

Сдвиг влево (M << L). Двоичное представление числа M сдвигается влево на L позиций. Рассмотрим пример использования операции <<, 17 << 3. Представляем число 17 в двоичной системе 10001, сдвигаем число на 3 позиции влево 10001000, в десятичной системе это число 136. 17 << 3 =136. Заметим, что сдвиг на один разряд влево соответствует умножению на 2, на два разряда – умножению на 4, на три – умножению на 8. Таким образом, операция M << L эквивалентна M.2L.

Cдвиг вправо (M >> L). В этом случае двоичное представление числа M сдвигается вправо на L позиций, что эквивалентно целочисленному делению числа M на .

Например, 25 >> 1=12, 25 >> 3= 3.

 

Логические операции и операции отношения

Логические операции выполняются над логическими значениями ИСТИНА (true) и ЛОЖЬ (false). В языке С ложью является 0, а истина – любое значение, отличное от нуля. В С++ появился тип bool. Результатами операций отношения (<, <=, >, >=, ==, ~=) или логической операции является ИСТИНА (true, 1) или ЛОЖЬ (false, 0). В Си определены следующие логические операции ИЛИ (||), И(&&), НЕТ (!) (см. табл. 2.3).

Таблица 2.3. Логические операции языка Си.

A B !A A&&B A||B
0 0 1 0 0
0 1 1 0 1
1 0 0 0 1
1 1 0 1 1

Операция ?

Для организации разветвлений в простейшем случае можно использовать оператор ? следующей структуры:

Условие? Выражение1: Выражение 2;

Операция работает так. Если Условие истинно (не равно 0), то результатом будет Выражение1, в противном случае Выражение2.

Например, оператор
y=x<0 ? –x: x;
записывает в переменную y модуль числа х.

Операция явного приведения типа

Для приведения выражения к другому типу данных в С++ существует операция явного приведения типа:

(тип) выражение

Здесь тип – любой поддерживаемый в С++ тип данных.

Например,
x=5;
y=x/2;
z=(float) x/2;

В результате этого участка программы переменная y принимает значение 2 (результат целочисленного деления), а переменная z – 2.5/

 

2.6. Стандартные математические функции в языке С++

В C++ определены стандартные функции над арифметическими операндами (табл. 2.4).

Таблица 2.4. Некоторые стандартные математические функции в Си

Обозначение Действие
abs(x) Модуль целого числа
fabs(x) Модуль вещественного числа
sin(x) Функция синус
cos(x) Функция косинус
tan(x) Функция тангенс
atan(x) Арктангенс
atan2(y,x) Арктангенс в диапазоне
sinh(x) Гиперболический синус х
cosh(x) Гиперболический косинус х
tanh(x) Гиперболический тангенс x
exp(x) ex
log(x) Функция натурального логарифма ln(x), x>0
log10(x) Функция десятичного логарифма log10(x), x>0
pow(x,y) xy. Ошибка области определения, если х=0, y≤0 или x<0 и y – не целое
sqrt(x) , x≥0

 

Определенную проблему представляет возведение Х в степень n. Функция pow не может возводить отрицательные числа в дробную степень. В этом случае можно воспользоваться формулой , которая программируется с помощью стандартных функций на языке С++ – -exp(n*log(fabs(x))) или –pow(fabs(x),y).

 

Ввод-вывод в языке Си


Дата добавления: 2019-09-13; просмотров: 255; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!