Знаковые целые числа
Целые числа. Определение целого числа
Латинской буквой mathbb{Z} обозначается множество целых чисел.
К примеру: 1, 3, 7, 19, 23 и т.д. Такие числа мы используем для подсчета (на столе лежит 5 яблок, у машины 4 колеса и др.)
Латинской буквой mathbb{N} — обозначается множество натуральных чисел.
К натуральным числам нельзя отнести отрицательные (у стула не может быть отрицательное количество ножек) и дробные числа (Иван не мог продать 3,5 велосипеда).
Числами, противоположными натуральным, являются отрицательные целые числа: −8, −148, −981, … .
Арифметические действия с целыми числами
Что можно делать с целыми числами? Их можно перемножать, складывать и вычитать друг из друга. Разберем каждую операцию на конкретном примере.
Сложение целых чисел
Два целых числа с одинаковыми знаками складываются следующим образом: производится сложение модулей этих чисел и перед полученной суммой ставится итоговый знак:
(+11) + (+9) = +20
Вычитание целых чисел
Два целых числа с разными знаками складываются следующим образом: из модуля большего числа вычитается модуль меньшего и перед полученным ответом ставят знак большего по модулю числа:
(-7) + (+8) = +1
Умножение целых чисел
Чтобы умножить одно целое число на другое нужно выполнить перемножение модулей этих чисел и поставить перед полученным ответом знак «+», если исходные числа были с одинаковыми знаками, и знак «−», если исходные числа были с разными знаками:
(-5) cdot (+3) = -15
(-3) cdot (-4) = +12
Следует запомнить следующее правило перемножения целых чисел:
+ cdot + = +
+ cdot – = –
– cdot + = –
– cdot – = +
Существует правило перемножения нескольких целых чисел. Запомним его:
Знак произведения будет «+», если количество множителей с отрицательным знаком четное и «−», если количество множителей с отрицательным знаком нечетное.
(-5) cdot (-4) cdot (+1) cdot (+6) cdot (+1) = +120
Деление целых чисел
Деление двух целых чисел производится следующим образом: модуль одного числа делят на модуль другого и если знаки чисел одинаковые, то перед полученным частным ставят знак «+», а если знаки исходных чисел разные, то ставится знак «−».
(-25) : (+5) = -5
Свойства сложения и умножения целых чисел
Разберем основные свойства сложения и умножения для любых целых чисел a, b и c:
- a + b = b + a – переместительное свойство сложения;
- (a + b) + c = a + (b + c) – сочетательное свойство сложения;
- a cdot b = b cdot a – переместительное свойство умножения;
- (a cdot c) cdot b = a cdot (b cdot c) – сочетательное свойства умножения;
- a cdot (b cdot c) = a cdot b + a cdot c – распределительное свойство умножения.
Источник: https://academyege.ru/page/celye-chisla.html
Форматы представления чисел в компьютере — урок. Информатика, 10 класс
Для хранения чисел в памяти компьютера используется два формата: целочисленный (естественная форма) и с плавающей точкой (нормализованная форма) (точка — разделительный знак для целой и дробной части числа).
Целочисленный формат (формат с фиксированной точкой) используется для представления в компьютере целых (англ. integer) положительных и отрицательных чисел. Для этого, как правило, используются форматы, кратные байту: (1), (2), (4) байта.
В форме с фиксированной запятой числа изображаются в виде последовательности цифр с постоянным для всех чисел положением запятой (или точки), отделяющей целую часть от дробной.
Эта форма проста и привычна для большинства пользователей, но имеет небольшой диапазон представления чисел и поэтому не всегда пригодна при вычислениях. Если же в результате какой-либо арифметической операции получается число, выходящее за допустимый диапазон, то происходит переполнение разрядной сетки, и все дальнейшие вычисления теряют смысл.
Однобайтовое представление применяется только для положительных целых чисел. В этом формате отсутствует знаковый разряд. Наибольшее двоичное число, которое может быть записано при помощи (1) байта, равно (11111111), что в десятичной системе счисления соответствует числу .
Для положительных и отрицательных целых чисел обычно используется (2) и (4) байта, при этом старший бит выделяется под знак числа: (0) – плюс, (1) – минус.
Самое большое (по модулю) целое число со знаком, которое может поместиться в (2)-байтовом формате, это число (0 1111111 11111111), то есть при помощи подобного кодирования можно представить числа от до .
Обрати внимание!
Если число вышло за указанные границы, произойдет переполнение! Поэтому при работе с большими целыми числами под них выделяется больше места, например (4) байта.
Формат с плавающей точкой (нормализованная форма) используется для представления в компьютере действительных чисел (англ. real). Числа с плавающей точкой размещаются, как правило, в (4) или (8) байтах.
Нормализованная форма представления чисел обеспечивает огромный диапазон их записи и является основной в современных ЭВМ.
Представление целого положительного числа в компьютере
Для представления целого положительного числа в компьютере используется следующее правило:
– число переводится в двоичную систему;- результат дополняется нулями слева в пределах выбранного формата;- последний разряд слева является знаковым, в положительном числе он равен (0).
Например, положительное число в зависимости от формата представления в компьютере будет иметь следующий вид:- для формата в виде (1) байта – (10000111) (отсутствует знаковый разряд);- для формата в виде (2) байтов – (0 0000000 10000111);
– для формата в виде (4) байтов – (0 0000000 00000000 00000000 10000111).
Представление целого отрицательного числа в компьютере
Для представления целого отрицательного числа в компьютере используется дополнительный код. Такое представление позволяет заменить операцию вычитания числа операцией сложения с дополнительным кодом этого числа. Знаковый разряд целых отрицательных чисел всегда равен (1).
Для представления целого отрицательного числа в компьютере используется следующее правило:
– число без знака переводится в двоичную систему;- результат дополняется нулями слева в пределах выбранного формата;
– полученное число переводится в обратный код (нули заменяются единицами, а единицы – нулями);
– к полученному коду прибавляется (1).
Обратный код для положительного двоичного числа совпадает с его прямым кодом, а для отрицательного числа нужно во всех разрядах, кроме знакового, нули заменить единицами и наоборот.
Дополнительный код для положительного числа совпадает с его прямым кодом, а для отрицательного числа образуется путем прибавления 1 к обратному коду.
Отрицательное число может быть представлено в виде (2) или (4) байт.
Например, представим число в (2)-байтовом формате:
– ® (10000111) (перевод десятичного числа без знака в двоичный код);- (0 0000000 10000111 )(дополнение двоичного числа нулями слева в пределах формата);
– (0 0000000 10000111 )® (1 1111111 01111000 )(перевод в обратный код);
– (1 1111111 01111000 )® (1 1111111 01111001) (перевод в дополнительный код).
Представление вещественного (действительного) числа в компьютере
Вещественное число может быть представлено в экспоненциальном виде, например:
В этом формате вещественное число ((R)) представляется в виде произведения мантиссы ((m)) и основания системы счисления ((P)) в целой степени ((n)), называемой порядком.
Представим это в общем виде, как: .
Порядок (n) указывает, на какое количество позиций и в каком направлении должна сместиться в мантиссе точка (запятая), отделяющая дробную часть от целой. Мантисса, как правило, нормализуется, то есть представляется в виде правильной дроби (0)
Источник: http://www.yaklass.ru/p/informatika/10-klass/informatciia-i-informatcionnye-protcessy-11955/predstavlenie-chislovoi-informatcii-v-kompiutere-11901/re-ab6ca0b7-d4b6-49e0-9bb9-b3fbdcac5692
§2.9. Представление чисел в компьютере. Целые числа и их компьютерный код 2.9.1. Целые числа в компьютере 2.9.2. Беззнаковое представление положительных целых чисел в компьютере 2.9.3. Знаковое представление целых чисел в компьютере 2.9.4. Недостатки прямого кода при представлении отрицательных чисел 2.9.5. Алгоритм построения дополнительного кода 2.9.6. Алгоритм получения числа по дополнительному коду 2.9.7. Перечисление целых знаковых чисел 2.9.8. Особенности целочисленной компьютерной арифметики
Вся информация, обрабатываемая современными компьютерами, хранится в них в двоичном виде.
Каждая ячейка памяти компьютера состоит из некоторого числа однородных элементов, обладающих двумя устойчивыми состояниями, одно из которых соответствует нулю, а другое — единице.
Каждый элемент ячейки служит для изображения одного разряда двоичного числа. Именно поэтому каждый элемент ячейки называют разрядом.
Для компьютерного представления целых чисел обычно используется несколько различных способов представления, отличающихся друг от друга количеством разрядов и наличием или отсутствием знакового разряда. Беззнаковое представление можно использовать только для неотрицательных целых чисел, отрицательные числа можно представлять только в знаковом виде.
При беззнаковом представлении все разряды ячейки отводятся под само число. При представлении со знаком самый старший (левый) разряд отводится под знак числа, остальные разряды — под число. Если число положительное, то в знаковый разряд помещается 0, если число отрицательное, то 1.
Так как в компьютере все данные хранятся в двоичном виде, то чтобы получить представление целого положительного числа в компьютере, сначала это число необходимо перевести в двоичную систему счисления. Если двоичное число состоит не более чем из k цифр, то это число можно записать в k-разрядной ячейке памяти, дополнив нулями слева до k разрядов.
Очевидно, что самое большое целое положительное число, которое мы можем записать в k разрядах, состоит из единиц во всех разрядах ячейки. Если перевести это число в десятичную систему счисления, то оно равно 2k – 1. Минимальное число состоит из нулей во всех разрядах и равно 0.
Запишем максимальные числа, которые можно вместить в 8, 16, 32 разрядах.
Количество разрядов | Максимальное число |
8 | 28 – 1 = 255 |
16 | 216 – 1 = 65535 |
32 | 232 – 1 = 4294967295 |
Для человека привычна запись числа в виде «знак-величина». Чтобы и в компьютере представлять числа в привычном для человека виде, необходимо самый левый разряд ячейки отвести для записи знака числа.
При записи положительного числа в самый левый разряд ячейки, который называется знаковым, записывается 0, при записи отрицательного числа 1. То есть при знаковом представлении чисел 0 в самом левом разряде ячейки соответствует знаку плюс, а единица – знаку минус.
Очевидно, что модуль числа можно записывать только в оставшихся k – 1 разрядах. Такое представление чисел называется прямым кодом.
Прямой код положительного числа отличается от прямого кода такого же по модуля отрицательного числа только содержанием знакового разряда. Однако для представления отрицательных чисел в компьютере используется дополнительный код(см. ниже).
В k-разрядной ячейке при представлении целых знаковых чисел умещаются числа [-2k –1, 2k–1–1]. Например, для 8-разрядной ячейки это диапазон [-128, 127].
Таким образом, при программировании нужно помнить о том, что:
- количество представимых чисел в k разрядах ограничено и зависит от k;
- диапазон знаковых чисел, представимых в k-разрядной ячейке, не симметричен относительно 0.
Запишем максимальные и минимальные числа, которые можно записать в 8, 16 и 32 разрядах при знаковом представлении.
Количество разрядов | Минимальное число | Максимальное число |
8 | –27 = –128 | 27 – 1 = 127 |
16 | –215 = –32768 | 215 – 1 = 32767 |
32 | –231 = –2147483648 | 231 – 1 = 2147483647 |
Заметим, что максимальное число, которое можно записать в k разрядах при знаковом представлении, практически вдвое меньше максимального числа, которое можно записать в тех же k разрядах при беззнаковом представлении. Поэтому если изначально известно, что обрабатываемые данные неотрицательны, то записывать их лучше в беззнаковом виде, тем самым расширяя диапазон значений, с которым можно будет работать.
Представление числа прямым кодомудобно и привычно для человека, но, как оказывается, прямой код плохо приспособлен для сложения чисел со знаком в компьютере.
При сложении чисел со знаком в прямом коде требуется выполнить четыре действия: 1) сравнить знаки чисел; 2) сравнить числа по модулю при неравенстве их знаков; 3) выполнить нужную арифметическую операцию (сложение при равенстве знаков или вычитание из большего по модулю числа меньшего при неравенстве их знаков);
4) присвоить алгебраической сумме (разности) знак большего по модулю числа.
Так как операция сложения значительно проще вычитания, то возник вопрос: а нельзя ли каким-либо образом заменить вычитание сложением? И оказалось, что такой способ существует.
Для достижения поставленной цели целые отрицательные числа в компьютере представляются в так называемом дополнительном коде.
Предположим, что нам нужно выполнить действие: 5 – 4.
Число –4 представляется в дополнительном коде как 11111100доп, число 5 представляется как 00000101. Сложим эти два числа:
+ |
1 |
Самая левая единица результата выйдет за разрядную сетку ячейки, а поэтому не сохранится. В результате в ячейку запишется число 00000001. А это число есть 1. Таким образом, операцию вычитания мы заменили операцией сложения.
В k-разрядной целочисленной компьютерной арифметике 2k = 0, так как единица в самом старшем разряде числа 2k должна стоять в k+1 разряде и следовательно, «выползает» за границы ячейки.
Дополнительный код отрицательного числа, записанный в k-разрядной ячейке, заменяет это отрицательное число на дополнение его модуля до числа 2k. То есть дополнительный код отрицательного числа m равен 2k – |m|. Такая замена позволяет заменить операцию вычитания чисел на операцию сложения.
Действительно, если в 8-разрядной ячейке сложить числа 5 и –6, где вместо –6 написано число (28 – 6), то получится 5 + (28 – 6) = 28 – 1, что будет соответствовать записи числа –1.
Поэтому для k-разрядной ячейки дополнительный код отрицательного числа можно получить следующим образом:
- Модуль числа представляется прямым кодом в k разрядах.
- В прямом коде все нули заменяются на единицы, а единицы – на нули. Таким образом получаем обратный код.
- К полученному обратному коду прибавляется единица.
Иногда требуется по имеющемуся дополнительному коду числа восстановить исходное число.
Модуль искомого числа в таком случае можно получить двумя способами:
- Провести обратную цепочку преобразований: вычесть единицу из дополнительного кода числа, инвертировать полученный результат и перевести его в десятичную систему счисления.
- Построить дополнительный код для имеющегося дополнительного кода и перевести результат в десятичную систему счисления.
Расположим целые знаковые числа, которые можно записать в 8-разрядах, в порядке возрастания на числовой оси:
Если мы хотим прибавить к какому-либо числу единицу, то сдвигаемся по этой оси вправо.
Если мы хотим отнять от какого-либо числа единицу, то сдвигаемся влево.
Но что произойдет, если мы прибавим единицу к числу 127? Выполним операцию прибавления 1 к числу 127.
127 = 111111112
127 + 1 = 128 = 100000002
Мы получили единицу в знаковом бите, т.е. мы получили отрицательное число. Все остальные биты этого числа – нули. Применив алгоритм восстановления отрицательного числа по его дополнительному коду, мы получим, что 100000002 = –128.
Следовательно, наш «компьютерный» отрезок замкнулся. В k-разрядной компьютерной арифметике все целые числа расположены по кольцу, причем рядом с максимальным расположено минимальное в конкретном представлении.
Аналогичным образом при вычитании единицы из –128 в 8-разрядной ячейке мы получим максимально возможное положительное число, т.е. 127.
В связи с тем, что количество чисел, которые могут быть представлены в k разрядах, ограничено, при выполнении арифметических действий в целочисленной k-разрядной арифметике могут возникнуть следующие ситуации:
- Старшие цифры результата могут выйти за пределы отведенных разрядов и будут утеряны.
- При сложении или умножении двух положительных знаковых чисел можно получить отрицательное число.
Это произойдет в том случае, если в результате вычисления в знаковом бите окажется единица. Подобные ситуации могут привести к неверному результату при выполнении верных алгоритмов. Поэтому об этих особенностях всегда нужно помнить при программировании.
Источник: http://school-collection.lyceum62.ru/ecor/storage/f9fea629-0744-4fea-b19f-3b20485d3005/[INF10_02_09].html
Учебник по информатике :: 4.1. Представление целых чисел в компьютере
Главная страница / 4. Кодирование (представление) данных в …: 4.1. Представление целых …
Навигация по разделу:
4.1.1. Форматы хранения целых чисел без знака4.1.2. Форматы хранения целых чисел со знаком
4.1.1. Форматы хранения целых чисел без знака
Целые числа могут представляться в компьютере со знаком или без знака.
Целые числа без знака в компьютерах обычно занимают в памяти 1, 2 или 4 байта. Размер занимаемой памяти зависит от разрядности процессора, т.е. величины машинного слова. Для современных моделей компьютеров машинное слово размером 64 бита стало обычным делом, поэтому однобайтовый формат хранения целых чисел без знака становится редкостью.
Диапазон значений, который может храниться в конкретном формате, легко определяется. Например, для однобайтового формата это значения от 00000000 до 11111111, что составляет в десятичной системе диапазон от 0 до (28-1), т.е. от 0 до 255. Аналогично определяются диапазоны значений для других форматов (табл. 4.1).
Таблица 4.1. Диапазоны значений целых чисел без знака
Формат целого числа без знака, байтДиапазонЗапись с порядкомВ обычной записи
1 | 0 … 28-1 | 0 … 255 |
2 | 0 … 216-1 | 0 … 65535 |
4 | 0 … 232-1 | 0 … 4294967296 |
Пример 4.1. Представим число 53 в одно– и двухбайтовом форматах хранения беззнаковых целых чисел. Переведем 53 в двоичную систему счисления: 5310 = 1101012.
1. В однобайтовом формате оно будет выглядеть так:
Биты числа | 1 | 1 | 1 | 1 | ||||
Номер разряда | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
2. В двухбайтовом формате:
Биты числа | 1 | 1 | 1 | 1 | ||||||||||||
Номер разряда | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
4.1.2. Форматы хранения целых чисел со знаком
Целые числа со знаком, как и беззнаковые, обычно занимают в памяти компьютера 1, 2 или 4 байта, при этом самый левый (старший) разряд содержит информацию о знаке числа. Знак «+» кодируется нулем, а «-» – единицей. Таким образом, под само число отводится семь разрядов: с нулевого до шестого.
Диапазоны значений целых чисел со знаком для одно-, двух- и четырехбайтового форматов приведены в табл. 4.2.
Таблица 4.2. Диапазоны значений целых чисел со знаком
Формат целого числа со знаком, байтДиапазонЗапись с порядкомВ обычной записи
1 | -27 … 27-1 | -128 … 127 |
2 | -215 … 215-1 | -32768 … 32767 |
4 | -231 … 231-1 | -2147483648 … 2147483647 |
В компьютерной технике применяются три формы записи (кодирования) целых чисел со знаком: прямой код, обратный код, дополнительный код. Последние две формы применяются особенно широко, так как позволяют упростить конструкцию арифметико-логического устройства компьютера путем замены разнообразных арифметических операций операцией сложения.
Рассмотрим перечисленные форматы на примере однобайтового представления.
Положительные числа в прямом, обратном и дополнительном кодах изображаются одинаково – двоичными кодами с цифрой 0 в знаковом разряде.
Пример 4.2. Число 4510 = 1011012. Так как число положительное, то в старшем разряде стоит 0. Число 45 в прямом, обратном и дополнительном кодах выглядит одинаково:
Биты числа | 1 | 1 | 1 | 1 | ||||
Номер разряда | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
Отрицательные числа в прямом, обратном и дополнительном кодах имеют разное изображение.
Прямой код. В знаковый разряд помещается цифра 1, а в разряды цифровой части числа – двоичный код его абсолютной величины.
Пример 4.3. Число -4510 = -1011012. Так как число отрицательное, то в старшем разряде стоит 1:
Биты числа | 1 | 1 | 1 | 1 | 1 | |||
Номер разряда | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
Обратный код получается инвертированием всех цифр двоичного кода абсолютной величины числа: нули заменяются единицами, а единицы — нулями. В знаковом разряде ставится 1.
Пример 4.3 (продолжение 1). Абсолютная величина: 0101101, после инвертирования: 1010010. Получаем обратный код числа:
Биты числа | 1 | 1 | 1 | 1 | ||||
Номер разряда | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
Дополнительный код получается из обратного кода путем прибавления единицы к его младшему разряду.
Пример 4.3 (продолжение 2). Мы уже имеем обратный код, прибавим к нему 1, получим дополнительный код числа -4510:
Биты числа | 1 | 1 | 1 | 1 | 1 | |||
Номер разряда | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
Обычно отрицательные десятичные числа при вводе в машину автоматически преобразуются в обратный или дополнительный двоичный код и в таком виде хранятся и обрабатываются. При выводе таких чисел из внутреннего представления машины во внешнее происходит обратное преобразование в отрицательные десятичные числа.
Источник: http://optic.cs.nstu.ru/files/CC/C/Lit/Informatica/info/chapter41.html
Целые числа
Познакомившись с понятием натуральные числа и основными арифметическими действиями над ними, можно перейти к следующему виду чисел.
Целые числа Z получают путем объединения натуральных чисел с множеством отрицательных и нулем. На письме это обозначается таким образом: Z = {… -2, -1, 0, 1, 2, …}.
Из этого следует, что целые числа замкнуты относительно сложения, вычитания и умножения.
Точное определение звучит так: множество целых чисел Z = {… -2, -1, 0, 1, 2, …} определяется как замыкание множества натуральных чисел N относительно арифметических операций сложения (+) и вычитания (-). Следовательно, сумма, разность и произведение двух целых чисел дают целые числа.
Целое число состоит из положительных натуральных чисел (1, 2, 3) и чисел вида -n и числа ноль.
Отрицательные числа впервые введены в математический тезаурус Михаэлем Штифелем в книге «Полная арифметика», написанной в 1544 году.
К основным алгебраическим свойствам сложения и умножения любых целых чисел относятся:
Замкнутость: при сложении — a + b = целое, при умножении a × b = целое; Ассоциативность: при сложении a + (b + c) = (a + b) + c, при умножении a × (b × c) = (a × b) × c; Коммутативность: при сложении a + b = b + a, при умножении a × b = b × a Нейтральный эелемент: при сложении a + 0 = a; при умножении a × 1 = a; Противоположный элемент: при сложении a + (−a) = 0; при умножении a × 1/a = 1; Дистрибутивность умножения относительно сложения: a × (b + c) = (a × b) + (a × c)
Первые пять вышеперечисленных свойств сложения целых чисел, свидетельствуют о том, что Z является циклической группой.
Это следует из того, что каждый ненулевой элемент Z может быть записан в виде конечной суммы 1 + 1 + … 1 или (−1) + (−1) + … + (−1).
Таким образом, Z является единственной бесконечной циклической группой по сложению по причине того, что любая бесконечная циклическая группа подобна группе (Z, +).
Первые четыре свойства умножения показывают то, что Z не является группой по умножению, и, следовательно, не является полем. Наименьшее поле, состоящее из целых чисел — это множество рациональных чисел Q.
Операция обычного деления для множества целых чисел не определена. Однако установлено так называемое деление с остатком.
Таким образом, для любых целых чисел a и b, , b 0 существует один единственный набор целых чисел q и r, где a = b*q + r и , где |b| — абсолютная величина (модуль) числа b. То есть, a — делимое, b — делитель, q — частное, r — остаток.
На основе деления с остатком разработан алгоритм Евклида нахождения наибольшего общего делителя двух целых чисел.
Положительным называют целое число в том случае, если оно больше нуля, отрицательным — если меньше нуля.
Кстати сказать, что нуль не является положительным или отрицательным.
Для любых целых чисел справедливы следующие соотношения:
если a < b и c < d, тогда a + c < b + d. если a < b и 0 < c, тогда ac < bc. (Отсюда следует , что если c < 0, то ac > bc.) Целые числа играют основополагающую роль во всех основных языках программирования. В настоящее время разрабатываются теоретические модели цифровых компьютеров, которые будут иметь потенциально бесконечное, но счетное пространство.
Поделиться ссылкой
Источник: http://SiteKid.ru/matematika/tselie_chisla.html
Целые числа. Начальный уровень
Множество целых чисел состоит из 3 частей:
- натуральные числа (рассмотрим их подробнее чуть ниже);
- числа, противоположные натуральным;
- ноль – “”
Множество целых чисел обозначается буквой .
1. Натуральные числа
Натуральные числа – это числа, которые мы употребляем для счета предметов.
Множество натуральных чисел обозначается буквой .
В операциях с целыми числами понадобится умение находить НОД и НОК.
Наибольший общий делитель (НОД)
Чтобы найти НОД необходимо:
- Разложить числа на простые множители (на такие числа, которые нельзя разделить ни на что больше, кроме самого себя или на , например, и т.д.).
- Выписать множители, которые входят в состав обоих чисел.
- Перемножить их.
Наименьшее общее кратное (НОК)
Чтобы найти НОК необходимо:
- Разложить числа на простые множители (это ты уже отлично умеешь делать).
- Выписать множители входящие в разложение одного из чисел (лучше брать самую длинную цепочку).
- Добавить к ним недостающие множители из разложений остальных чисел.
- Найти произведение получившихся множителей.
2. Отрицательные числа
это числа, противоположные натуральным, то есть:
и т.д.
Множество целых чисел состоит из 3 частей:
- натуральные числа (рассмотрим их подробнее чуть ниже);
- числа, противоположные натуральным (все станет на свои места, как только ты узнаешь, что такое натуральные числа);
- ноль – ““ (куда уж без него?)
Множество целых чисел обозначается буквой Z.
1. Натуральные числа
«Бог создал натуральные числа, всё остальное – дело рук человеческих» (c) Немецкий математик Кронекер.
Натуральные числа – это числа, которые мы употребляем для счета предметов и именно на этом основывается их история возникновения – необходимости считать стрелы, шкуры и т.д.
1, 2, 3, 4… n
Множество натуральных чисел обозначается буквой N.
Соответственно, в это определение не входит (не можешь же ты посчитать то, чего нет?) и тем более не входят отрицательные значения (разве бывает яблоко?).
Кроме этого, не входят и все дробные числа (мы также не можем сказать « у меня есть ноутбука», или «я продал машины»)
Любое натуральное число можно записать с помощью 10 цифр:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Таким образом, 14 – это не цифра. Это число. Из каких цифр оно состоит? Правильно, из цифр и .
Натуральные числа можно складывать, вычитать, умножать и делить.
Сложение
Что интересного ты можешь сказать про эту процедуру? Конечно, ты сейчас ответишь «от перестановки слагаемых значение суммы не меняется». Казалось бы, примитивное, знакомое с первого класса правило, однако, при решении больших примеров оно моментально забывается.
Не забывай про него – используй группировку, чтобы облегчить себе процесс подсчета и снизить вероятность ошибок, ведь на ЕГЭ калькулятора у тебя не будет.
4 + 5 + 3 + 6 = 4 + 6 + 5 + 3 = 10 + 5 + 3 = 18
Вычитание
При вычитании мы также можем группировать вычитаемые числа, например:
32 – 5 – 2 – 6 = (32 – 2) – 5 – 6 = 30 – 5 – 6 = 19.
А что, если вычитание чередуется в примере со сложением? Так же можно группировать, ответишь ты, и это правильно. Только прошу, не забывай о знаках перед числами, например: . Помни: неправильно проставленные знаки приведут к ошибочному результату.
Умножение
Очевидно, что от перемены мест множителей значение произведения также не изменится: . Я не буду говорить тебе «используй это при решении примеров» (ты и сам понял намек, правда?), а лучше расскажу, как быстро умножать некоторые числа в уме. Итак, внимательно смотри таблицу:
И еще немного об умножении. Конечно, ты помнишь два особых случая … Догадываешься о чем я? Вот об этом:
Деление
Ну что здесь можно сказать интересного? Число может делиться на другое нацело (то есть, без остатка) и с остатком, который всегда меньше делителя, что вполне логично. Особые случаи, если при делении у нас есть 0. Чему будет равен пример, если 0 является делителем и чему равен пример, если он делимое? Правильно:
Ах да, еще рассмотрим признаки делимости. Всего существует 7 правил по признакам делимости, из которых первые 3 ты точно уже знаешь! А вот остальные совсем не сложно запомнить. Смотри таблицу:
Первые три правила ты, конечно же, знаешь. Четвертое и пятое легко запомнить – при делении на и мы смотрим, делится ли на это сумма цифр, составляющих число. При делении на мы обращаем внимание на две последние цифры числа – делится ли число, которое они составляют на ? При делении на число должно одновременно делиться на и на . Вот и вся премудрость.
Ты сейчас думаешь – «зачем мне все это»? Во-первых, ЕГЭ проходит без калькулятора и данные правила помогут тебе сориентироваться в примерах, а во-вторых, ты же слышал задачи про НОД и НОК? Знакомая аббревиатура? Начнем вспоминать и разбираться.
Наибольший общий делитель (НОД)
Допустим, у тебя есть два числа: и . На какое наибольшее число делятся оба этих числа? Ты, не задумываясь, ответишь , потому что знаешь, что:
Какие цифры в разложении общие? Правильно, . Вот и твой ответ был . Держа в голове этот простой пример, ты не забудешь алгоритм, как находить НОД. Попробуй «выстроить» его у себя в голове. Получилось?
Чтобы найти НОД необходимо:
- Разложить числа на простые множители (на такие числа, которые нельзя разделить ни на что больше, кроме самого себя или на , например, и т.д.).
- Выписать множители, которые входят в состав обоих чисел.
- Перемножить их.
Понимаешь, зачем нам нужны были признаки делимости? Чтобы ты посмотрел на число и мог начать делить без остатка.
Для примера найдем НОД чисел и .
Первое число – .
Глядя на него, ты сразу можешь сказать, что оно делится на , запишем:
больше разделить ни на что нельзя, а вот можно – и , получаем:
Возьмем еще одно число – .
По признакам делимости оно должно без остатка делиться на , так как на заканчивается. Делим:
Проанализируем изначальное число.
На оно делиться не может (последняя цифра – нечетная), – не делится на , значит число тоже не делится на , на и на также не делится (сумма цифр, входящих в число, не делится на и на ) на тоже не делится, так как не делится на и , на тоже не делится, так как не делится на и . Осталось проверить деление на . нельзя разделить на нацело, значит, число можно разложить только на и .
А теперь найдем НОД этих чисел ( и ). Какое это число? Правильно, .
Совет: глядя на числа можно иногда сразу найти хотя бы один общий делитель. Раздели сначала на него, а потом уже раскладывай дальше. При этом, необязательно общий делитель раскладывать на его составляющие – все равно потом ты будешь их снова перемножать. |
Потренируемся?
Задача №1. Найти НОД
Справился? Сравним ответы и ход мыслей:
Найти НОД
1) Делю сразу на , так как оба числа 100% делятся на :
2) Разделю на оставшиеся большие числа ( и ), так как и без остатка делятся на (при этом, раскладывать не буду – он и так общий делитель):
3) Оставлю и в покое и начну рассматривать числа и . Оба числа точно делятся на (заканчиваются на четные цифры ( в таком случае представляем как , а можно разделить на )):
4) Работаем с числами и . Есть ли у них общие делители? Так легко, как в предыдущих действиях, и не скажешь, поэтому дальше просто разложим их на простые множители:
5) Как мы видим, мы были правы: у и общих делителей нет, и теперь нам нужно перемножить .
НОД
Задача №2. Найти НОД
Здесь не могу быстро найти хоть один общий делитель, так что просто раскладываю на простые множители (как можно меньше):
Точно, НОД, а я изначально не проверила признак делимости на , и, возможно, не пришлось бы делать столько действий. Но ты-то проверил, верно? Молодец! Как видишь, это совсем несложно.
Наименьшее общее кратное (НОК)
Допустим, у тебя есть два числа – и . Какое существует самое маленькое число, которое делится и без остатка (то есть нацело)? Сложно представить? Вот тебе визуальная подсказка:
Ты же помнишь, что обозначается буквой ? Правильно, как раз целые числа. Так какое наименьшее число подходит на место х? :
В данном случае .
Из этого простого примера вытекает несколько правил:
- Если одно из двух натуральных чисел делится на другое число, то большее из этих двух чисел является их наименьшим общим кратным (как в нашем случае).
Найди у следующих чисел:
Конечно, ты без труда справился с этой задачей и у тебя получились ответы – ,, и . Заметь, в правиле мы говорим о ДВУХ числах, если чисел будет больше, то правило не работает.
Например, , так как не делится без остатка на .
- Если два (или более двух) числа являются взаимно простыми, то наименьшее общее кратное равно их произведению.
Найди НОК у следующих чисел:
Посчитал? Вот ответы – ,, ; .
Как ты понимаешь, не всегда можно так легко взять и подобрать этот самый х, поэтому для чуть более сложных чисел существует следующий алгоритм:
- Разложить числа на простые множители (это ты уже отлично умеешь делать).
- Выписать множители входящие в разложение одного из чисел (лучше брать самую длинную цепочку).
- Добавить к ним недостающие множители из разложений остальных чисел.
- Найти произведение получившихся множителей.
Потренируемся? Попробуем вместе найти НОК (345; 234)
Раскладываем каждое число:
Почему я сразу написал ? Вспомни признаки делимости на : делится на (последняя цифра – четная) и сумма цифр делится на . Соответственно, можем сразу разделить на , записав ее как .
Теперь выписываем в строчку наиболее длинное разложение – второе:
Добавим к нему числа из первого разложения, которых нет в том, что мы выписали:
Заметь: мы выписали все кроме , так как она у нас уже есть.
Теперь нам необходимо все эти числа перемножить!
Попробуй самостоятельно найти НОК следующих чисел:
Найти
Найти
Какие ответы у тебя получились?
Вот, что вышло у меня:
Сколько времени ты потратил на нахождение НОК? Мое время – 2 минуты, правда я знаю одну хитрость, которую предлагаю тебе открыть собственноручно.
Если ты очень внимателен, то ты наверное заметил, что по заданным числам мы уже искали НОД и разложение на множители этих чисел ты мог взять из того примера, тем самым упростив себе задачу, но это далеко не все. Посмотри на картинку, возможно к тебе придут еще какие-нибудь мысли:
Ну что? Сделаю подсказку: попробуй перемножить НОК и НОД между собой и запиши все множители, которые будут при перемножении. Справился? У тебя должна получиться вот такая цепочка:
Присмотрись к ней повнимательней: сравни множители с тем, как раскладываются и .
Какой вывод ты можешь сделать из этого? Правильно! Если мы перемножим значения НОК и НОД между собой, то мы получим произведение этих чисел.
Соответственно, имея числа и значение НОД (или НОК), мы можем найти НОК (или НОД) по такой схеме:
1. Находим произведение чисел:
2. Делим получившееся произведение на наш НОД (6240; 6800) = 80:
Вот и все.
Запишем правило в общем виде:
НОК НОД
Попробуй найти НОД, если известно, что:
Справился? .
3. Отрицательные числа – «лжечисла» и их признание человечеством
Как ты уже понял, это числа, противоположные натуральным, то есть:
и т.д.
Отрицательные числа можно складывать, вычитать, умножать и делить – все как в натуральных. Казалось бы, что в них такого особенного? А дело в том, что отрицательные числа «отвоевывали» себе законное место в математике аж до XIX века (до этого момента было огромное количество споров, существуют они или нет).
Само отрицательное число возникло из-за такой операции с натуральными числами, как «вычитание». Действительно, из вычесть – вот и получается отрицательное число. Именно поэтому, множество отрицательных чисел часто называют «расширением множества натуральных чисел».
Отрицательные числа долго не признавались людьми. Так, Древний Египет, Вавилон и Древняя Греция – светочи своего времени, не признавали отрицательных чисел, а в случае получения отрицательных корней в уравнении (например, как у нас ), корни отвергались как невозможные.
Впервые отрицательные числа получили свое право на существование в Китае, а затем в VII веке в Индии. Как ты думаешь, с чем связано это признание? Правильно, отрицательными числами стали обозначать долги (иначе – недостачу).
Считалось, что отрицательные числа – это временное значение, которое в результате изменится на положительное (то есть, деньги кредитору все же вернут).
Однако, индийский математик Брахмагупта уже тогда рассматривал отрицательные числа наравне с положительными.
В Европе к полезности отрицательных чисел, а также к тому, что они могут обозначать долги, пришли значительно позже, эдак, на тысячелетие.
Первое упоминание замечено в 1202 году в «Книге абака» Леонарда Пизанского (сразу говорю – к Пизанской башне автор книги отношения никакого не имеет, а вот числа Фибоначчи – это его рук дело (прозвище Леонардо Пизанского – Фибоначчи)).
Далее европейцы пришли к тому, что отрицательные числа могут обозначать не только долги, но и нехватку чего бы то ни было, правда, признавали это не все.
Так, в XVII веке Паскаль считал что . Как думаешь, чем он это обосновывал? Верно, «ничто не может быть меньше НИЧЕГО».
Отголоском тех времен остается тот факт, что отрицательное число и операция вычитания обозначается одним и тем же символом – минусом «-». И правда: .
Число «» положительное, которое вычитается из , или отрицательное, которое суммируется к ?… Что-то из серии «что первое: курица или яйцо?» Вот такая вот, своеобразная эта математическая философия.
Отрицательные числа закрепили свое право на существование с появлением аналитической геометрии, иначе говоря, когда математики ввели такое понятие как числовая ось.
Именно с этого момента наступило равноправие. Однако все равно вопросов было больше чем ответов, например:
пропорция
Данная пропорция носит название «парадокс Арно». Подумай, что в ней сомнительного?
Давай рассуждать вместе «» больше, чем «» верно? Таким образом, согласно логике, левая часть пропорции должна быть больше, чем правая, но они равны… Вот он и парадокс.
В итоге, математики договорились до того, что Карл Гаусс (да, да, это тот самый, который считал сумму (или ) чисел) в 1831 году поставил точку – он сказал, что отрицательные числа имеют те же права, что и положительные, а то, что они применимы не ко всем вещам, ничего не означает, так как дроби так же не применимы ко многим вещам (не бывает так, что яму роют землекопа, нельзя купить билета в кино и т.д.).
Успокоились математики только в XIX веке, когда Уильямом Гамильтоном и Германом Грассманом была создана теория отрицательных чисел.
Вот такие они спорные, эти отрицательные числа.
3. Возникновение «пустоты», или биография нуля
В математике – особенное число. С первого взгляда, это ничто: прибавить , отнять – ничего не изменится, но стоит только приписать его справа к «», и полученное число будет в раз больше изначального. Умножением на ноль мы все превращаем в ничто, а разделить на «ничто», то есть , мы не можем. Одним словом, волшебное число)
История нуля длинная и запутанная. След нуля найден в сочинениях китайцев во 2 тыс. н.э. и ещё раньше у майя. Первое использование символа нуля, каковым он является в наши дни, было замечено у греческих астрономов.
Существует множество версий, почему было выбрано именно такое обозначение «ничего». Некоторые историки склоняются к тому, что это омикрон, т.е. первая буква греческого слова ничто – ouden. Согласно другой версии, жизнь символу ноля дало слово «обол» (монета, почти не имеющая ценности).
Ноль (или нуль) как математический символ впервые появляется у индийцев (заметь, там же стали «развиваться» отрицательные числа). Первые достоверные свидетельства о записи нуля относятся к 876 г., и в них «» – составляющая числа .
В Европу ноль также пришел с запозданием – лишь в 1600г., и также как и отрицательные числа, сталкивался с сопротивлением (что поделаешь, такие они, европейцы).
«Нуль часто ненавидели, издавна боялись, а то и запрещали» — пишет американский математик Чарльз Сейф. Так, турецкий султан Абдул-Хамид II в конце XIXв. приказал своим цензорам вычеркнуть из всех учебников химии формулу воды H2O, принимая букву «О» за нуль и не желая, чтобы его инициалы порочились соседством с презренным нулём».
На просторах интернета можно встретить фразу: «Ноль – самая могущественная сила во Вселенной, он может всё! Ноль создаёт порядок в математике, и он же вносит в неё хаос». Абсолютно верно подмечено:)
Источник: https://youclever.org/book/tselye-chisla-1
Представление целых чисел
Источник: https://poisk-ru.ru/s57818t1.html
Целые числа
Данные каким-либо образом необходимо представлять в памяти компьютера. Существует множество различных типов данных, простых и довольно сложных, имеющих большое число компонентов и свойств.
Однако, для компьютера необходимо использовать некий унифицированный способ представления данных, некоторые элементарные составляющие, с помощью которых можно представить данные абсолютно любых типов. Этими составляющими являются числа, а вернее, цифры, из которых они состоят. С помощью цифр можно закодировать практически любую дискретную информацию.
Поэтому такая информация часто называется цифровой (в отличие от аналоговой, непрерывной).
Первым делом необходимо выбрать систему счисления, наиболее подходящую для применения в конкретных устройствах. Для электронных устройств самой простой реализацией является двоичная система: есть ток – нет тока, или малый уровень тока – большой уровень тока.
Хотя наиболее эффективной являлась бы троичная система. Наверное, выбор двоичной системы связан еще и с использование перфокарт, в которых она проявляется в виде наличия или отсутствия отверстия. Отсюда в качестве цифр для представления информации используются 0 и 1.
Таким образом данные в компьютере представляются в виде потока нулей и единиц. Один разряд этого потока называется битом. Однако в таком виде неудобно оперировать с данными вручную.
Стандартом стало разделение всего потока на равные последовательные группы из 8 битов – байты или октеты. Далее несколько байтов могут составлять слово. Здесь следует разделять машинное слово и слово как тип данных.
В первом случае его разрядность обычно равна разрядности процессора, т.к. машинное слово является наиболее эффективным элементом для его работы. В случае, когда слово трактуется как тип данных (word), его разрядность всегда равна 16 битам (два последовательных байта).
Также как типы данных существую двойные слова (double word, dword, 32 бита), четверные слова (quad word, qword, 64 бита) и т.п.
Теперь мы вплотную подошли к представлению целых чисел в памяти. Т.к. у нас есть байты и различные слова, то можно создать целочисленные типы данных, которые будут соответствовать этим элементарным элементам: byte (8 бит), word (16 бит), dword (32 бита), qword (64 бита) и т.д.
При этом любое число этих типов имеет обычное двоичное представление, дополненное нулями до соответствующей размерности. Можно заметить, что число меньшей размерности можно легко представить в виде числа большей размерности, дополнив его нулями, однако в обратном случае это не верно.
Поэтому для представления числа большей размерности необходимо использовать несколько чисел меньшей размерности. Например:
- qword (64 бита) можно представить в виде 2 dword (32 бита) или 4 word (16 бит) или 8 byte (8 бит);
- dword (32 бита) можно представить в виде 2 word (16 бит) или 4 byte (8 бит);
- word (16 бит) можно представить в виде 2 byte (8 бит);
Если A – число, B1..Bk – части числа, N – разрядность числа, M – разрядность части, N = k*M, то:Например:
- A = F1E2D3C4B5A69788 (qword)
- A = 232 * F1E2D3C4 (dword) + 20 * B5A69788 (dword)
- A = 248 * F1E2 (word) + 232 * D3C4 (word) + 216 * B5A6 (word) + 20 * 9788 (word)
- A = 256 * F1 (byte) + 248 * E2 (byte) + … + 28 * 97 (byte) + 20 * 88 (byte)
Существуют понятия младшая часть (low) и старшая часть (hi) числа. Старшая часть входит в число с коэффициентом 2N-M, а младшая с коэффициентом 20. Например:
Байты числа можно хранить в памяти в различном порядке. В настоящее время используются два способа расположения: в прямом порядке байт и в обратном порядке байт. В первом случае старший байт записывается в начале, затем последовательно записываются остальные байты, вплоть до младшего. Такой способ используется в процессорах Motorola и SPARC. Во втором случае, наоборот, сначала записывает младший байт, а затем последовательно остальные байты, вплоть до старшего. Такой способ используется в процессорах архитектуры x86 и x64. Далее приведен пример:
Используя подобные целочисленные типы можно представить большое количество неотрицательных чисел: от 0 до 2N-1, где N – разрядность типа. Однако, целочисленный тип подразумевает представление также и отрицательных чисел. Можно ввести отдельные типы для отрицательных чисел от -2N до -1, но тогда такие типы потеряют универсальность хранить и неотрицательные, и отрицательные числа. Поэтому для определения знака числа можно выделить один бит из двоичного представления. По соглашению, это старший бит. Остальная часть числа называется мантиссой.
Если старший бит равен нулю, то мантисса есть обычное представление числа от 0 до 2N-1-1. Если же старший бит равен 1, то число является отрицательным и мантисса представляет собой так называемый дополнительный код числа. Поясним на примере:
Как видно из рисунка, дополнительный код равен разнице между числом 2N-1 и модулем исходного отрицательного числа (127 (1111111) = 128 (10000000) – |-1| (0000001)). Из этого вытекает, что сумма основного и дополнительного кода одного и того же числа равна 2N-1.
Из вышеописанного получается, что можно использовать только целочисленные типы со знаком для описания чисел.
Однако существует множество сущностей, которые не требуют отрицательных значений, а значит, место под знак можно включить в представление неотрицательного числа, удвоив количество различных неотрицательных значений.
Как результат, в современных компьютерах используются как типы со знаком или знаковые типы, так и типы без знака или беззнаковые типы.
В итоге можно составить таблицу наиболее используемых целочисленных типов данных:
Поиск Лекций В общем случае под целое число можно отвести любое число соседних байтов памяти, однако система команд ПК поддерживает работу с числами только размером в байт и слово и частично поддерживает работу с числами размером в двойное слово (если числа занимают иное количество байтов, то все операции над ними надо реализовывать самому программисту). Поэтому можно считать, что в ПК целые числа представляются только байтом, словом или двойным словом. Именно эти форматы чисел мы и будем рассматривать. В ПК делается различие между целыми числами без знака (неотрицательными) и со знаком. Это объясняется тем, что в ячейках одного и того же размера можно представить больший диапазон беззнаковых чисел, чем неотрицательных знаковых чисел. Например, в байте можно представить беззнаковые числа от 0 до 255, а неотрицательные знаковые числа – только от 0 до 127.
Отметим “экзотическую” особенность представления чисел в ПК: числа размером в слово и двойное слово хранятся в памяти в “перевернутом” виде”. Если на число отведено слово памяти, то старшие (левые) 8 битов числа размещаются во втором байте слова, а младшие (правые) 8 битов – в первом байте; в терминах шестнадцатеричной системы: первые две цифры числа хранятся во втором байте слова, а две последние цифры – в первом байте. Например, число 98 = 0062h хранится в памяти так (А – адреса слова): Зачем так сделано? Как известно, сложение и вычитание многозначных чисел мы начинаем с действий над младшими цифрами (например, при сложении чисел 1234 и 5678 мы сначала складываем цифры 4 и 8), а затем постепенно переходим к более старшим цифрам.
Поскольку в этих условиях многозначное число нельзя считать из памяти сразу целиком, то в первую очередь приходится считывать байт, где находятся младшие цифры числа, а для этого надо, чтобы такой байт хранился в памяти первым. По этой причине в первых моделях ПК и появилось “перевернутое” представление чисел. В последующих же моделях, где уже можно было сразу считать из памяти все число, ради сохранения преемственности, ради того, чтобы ранее составленные программы могли без изменений выполняться на новых ПК, сохранили это “перевернутое” представление чисел. Отметим, что в регистрах числа размером в слово хранятся в нормальном, неперевернутом виде – за этим следят команды пересылки: “Перевернутое” представление используется и для чисел размером в двойное слово: в первом байте двойного слова хранятся младшие (правые) 8 битов числа, во втором байте – предпоследние 8 битов и т.д. Например, число 1235678h хранится в памяти так Целые числа со знаком
В ПК знаковые числа записываются в дополнительном коде: неотрицательное число записывается так же, как и беззнаковое число, а отрицательное число x представляется безнаковым числом 2k – |x|, где k – количество разрядов в ячейке, отведенное под число Например, дополнительным кодом числа +98 будет байт 62h или слово 0062h, а дополнительным кодом числа -98 – байт 9Eh (= 158 = 256 – 98) или слово EF(= 216 – 98 = 10000h – 62h). Приведем еще несколько примеров представления знаковых чисел в дополнительном коде (при ячейке размером в байт):
Как и беззнаковые, знаковые числа размером в слово и двойное слово записываются в памяти в «перевернутом» виде. Например, число -98 как слово будет хранится в памяти таким образом. При этом знаковый бит оказывается во втором (правом) байте слова. |
||||
Общее название | Название в Pascal | Название в C++ | Описание | Диапазон значений |
unsigned byte | byte | unsigned char | беззнаковый 8 бит | 0..255 |
signed byte | shortint | char | знаковый 8 бит | -128..127 |
unsigned word | word | unsigned short | беззнаковый 16 бит | 0..65535 |
signed word | smallint | short | знаковый 16 бит | -32768..32767 |
unsigned double word | cardinal | unsigned int | беззнаковый 32 бита | 0..232-1 |
signed double word | integer | int | знаковый 32 бита | -231..231-1 |
unsigned quad word | uint64 | unsigned long long unsigned __int64_t (VC++) |
беззнаковый 64 бита | 0..264-1 |
signed quad word | int64 | long long __int64_t (VC++) |
знаковый 64 бита | -263..263-1 |
Источник: http://code-man.narod.ru/basics/data/standard/integer
Спасибо за чтение!