операции с числами в специальных кодах

Операции с числами в специальных кодах

Арифметические операции на сумматорах прямого, обратного и дополнительного кода

Все операции в ЭВМ выполняют над числами, представленными специальными машинными кодами. Их использование позволяет обрабатывать знаковые разряды чисел так же, как и значащие разряды, а также заменять операцию вычитания операцией сложения.

Каждому двоичному числу можно поставить в соответствие несколько видов кодов.

Различают следующие коды двоичных чисел: прямой (П), обратный (ОК) и дополнительный (ДК).

Прямой код двоичного числа образуется из абсолютного значения этого числа и кода знака (0 или 1) перед его старшим числовым разрядом.

Прямой код двоичного числа образуется по следующему алгоритму:

1) определить данное двоичное число: либо целое (порядок), либо правильная дробь (мантисса);

2) если это дробь, то цифры после запятой можно рассматривать как целое число;

3) если это целое и положительное двоичное число, то вместе с добавлением нуля в старший разряд число превращается в код.

Для отрицательного двоичного числа перед ним ставится единица.

число Y 2 = +0,11011012 → код числа Y пр = 01101101.

Подчеркиванием выделяют знаковые разряды.

Обратный код двоичного числа образуется по следующему алгоритму:

1) обратный код положительных чисел совпадает с их прямым кодом;

2) обратный код отрицательного числа содержит единицу в знаковом разряде числа, а значащие разряды числа заменяются инверсными, т. е. нули заменяются единицами, а единицы нулями.

Свое название обратный код получил потому, что коды цифр отрицательного числа заменены инверсными.

Наиболее важные свойства обратного кода чисел:

— сложение положительного числа С с его отрицательным значением в обратном коде дает так называемую машинную единицу МЕок = 1|1111, состоящую из единиц в знаковом и в значащих разрядах числа;

— нуль в обратном коде имеет двоякое значение.

Он может быть как положительным числом 0|0000, так и отрицательным 1|1111.

Двойственное представление нуля явилось причиной того, что в современных ЭВМ все числа представляются не обратным, а дополнительным кодом.

Обратный код положительного двоичного числа совпадает с прямым кодом, а для отрицательного числа нужно, исключая знаковый разряд, во всех остальных разрядах нули заменить единицами и наоборот.

Дополнительный код положительных чисел совпадает с их прямым кодом. Дополнительный код отрицательного числа представляет собой результат суммирования обратного кода числа с единицей младшего разряда (2 0 – для целых чисел, 2 –k – для дробных).

Основные свойства дополнительного кода:

· сложение дополнительных кодов положительного числа С с его отрицательным значением дает так называемую машинную единицу дополнительного кода:

т. е. число 10 (два) в знаковых разрядах числа;

Дополнительный код положительного числа совпадает с его прямым кодом. Дополнительный код отрицательного числа образуется путем прибавления единицы к обратному коду.

Арифметические действия в машинных кодах

Сложение, а также вычитание чисел в обратном или дополнительном кодах выполняют с использованием обычного правила арифметического сложения многоразрядных чисел.

Это правило распространяется и на знаковые разряды чисел.

Различие обратного и дополнительного кодов связано с последующими действиями с единицей переноса из старшего разряда, изображающего знак числа.

При сложении чисел в обратном коде эту единицу надо прибавить к младшему разряду результата, а в дополнительном коде единица переноса из старшего разряда игнорируется, так как дополнительный код из обратного получается как раз прибавлением единицы.

Сложение и вычитание машинных чисел

Операция вычитания приводится к операции сложения путем преобразования чисел в обратный или дополнительный код согласно таблице.

Сложение (вычитание) машинных чисел

Скобки в представленных выражениях указывают на замену операции вычитания операцией сложения с обратным или дополнительным кодом соответствующего числа.

Сложение двоичных чисел осуществляется последовательно, поразрядно в соответствии с таблицей.

При выполнении сложения цифр необходимо соблюдать следующий алгоритм:

1) слагаемые должны иметь одинаковое число разрядов.

Для выравнивания разрядной сетки слагаемых можно дописывать незначащие нули слева к целой части числа и незначащие нули справа к дробной части числа;

2) знаковые разряды участвуют в сложении так же, как и значащие;

3) необходимые преобразования кодов производят с изменением знаков чисел. Приписанные незначащие нули изменяют свое значение при преобразованиях по общему правилу;

4) при преобразовании единицы переноса из старшего знакового разряда, в случае использования ОК, эта единица складывается с младшим числовым разрядом.

При использовании ДК единица переноса теряется. Знак результата формируется автоматически, результат представляется в том коде, в котором представлены исходные слагаемые.

1. Сложить два числа: А10 = 7, В10 = 16.

Исходные числа имеют различную разрядность, необходимо провести выравнивание разрядной сетки:

Сложение в обратном или дополнительном коде дает один и тот же результат:

2. Сложить два числа: А10 = +16, В10 = –7 в ОК и ДК.

По таблице необходимо преобразование А +(–В), в которой второй член преобразуется с учетом знака:

При сложении чисел в ОК и ДК были получены переносы в знаковый разряд и из знакового разряда.

В случае ОК перенос из знакового разряда требует дополнительного прибавления единицы младшего разряда.

В случае ДК этот перенос игнорируется.

Пример сложения чисел +18 и –7 приведен в таблице.

Источник

Обратный и дополнительный коды двоичных чисел

операции с числами в специальных кодах. l4 image002. операции с числами в специальных кодах фото. операции с числами в специальных кодах-l4 image002. картинка операции с числами в специальных кодах. картинка l4 image002. Арифметические операции на сумматорах прямого, обратного и дополнительного кодаоперации с числами в специальных кодах. equation. операции с числами в специальных кодах фото. операции с числами в специальных кодах-equation. картинка операции с числами в специальных кодах. картинка equation. Арифметические операции на сумматорах прямого, обратного и дополнительного кода операции с числами в специальных кодах. distance. операции с числами в специальных кодах фото. операции с числами в специальных кодах-distance. картинка операции с числами в специальных кодах. картинка distance. Арифметические операции на сумматорах прямого, обратного и дополнительного кодаоперации с числами в специальных кодах. projection image013. операции с числами в специальных кодах фото. операции с числами в специальных кодах-projection image013. картинка операции с числами в специальных кодах. картинка projection image013. Арифметические операции на сумматорах прямого, обратного и дополнительного кода операции с числами в специальных кодах. piramid. операции с числами в специальных кодах фото. операции с числами в специальных кодах-piramid. картинка операции с числами в специальных кодах. картинка piramid. Арифметические операции на сумматорах прямого, обратного и дополнительного кода операции с числами в специальных кодах. line. операции с числами в специальных кодах фото. операции с числами в специальных кодах-line. картинка операции с числами в специальных кодах. картинка line. Арифметические операции на сумматорах прямого, обратного и дополнительного кодаоперации с числами в специальных кодах. p image002. операции с числами в специальных кодах фото. операции с числами в специальных кодах-p image002. картинка операции с числами в специальных кодах. картинка p image002. Арифметические операции на сумматорах прямого, обратного и дополнительного кода

Пример перевода
x1=10101-[x1]пр=010101
x2=-11101-[x2]пр=111101
x3=0,101-[x3]пр=0,101
x4=-0,111-[x4]пр=1,111
2) Обратный код числа, используется для выполнения арифметических операций вычитания, умножения, деления, через сложение. Обратный код положительного числа совпадает с его прямым кодом, обратный код отрицательного числа формируется по правилам: в знаковом разряде записывается “1”; цифровые значения меняются на противоположные.

3) Дополнительный код числа, имеет такое же назначение, как и обратный код числа. Формируется по следующим правилам: положительные числа в дополнительном коде выглядят также как и в обратном и в прямом коде, т.е. не изменяются. Отрицательные числа кодируются следующим образом: к обратному коду отрицательного числа (к младшему разряду) добавляется 1, по правилу двоичной арифметики.

Пример перевода
x1=10101-[x1]доп=010101
x2=-11101-[x2]обр=100010+1-[x2]доп=100011
x3=0,101-[x3]доп=0,101
x4=-0,111-[x4]обр=1,000+1-[x4]доп=1,001
Для выявления ошибок при выполнении арифметических операций используются также модифицированные коды: модифицированный прямой; модифицированный обратный; модифицированный дополнительный, для которых под код знака числа отводится два разряда, т.е. “+”=00; ”-”=11. Если в результате выполнения операции в знаковом разряде появляется комбинация 10 или 01 то для машины это признак ошибки, если 00 или 11 то результат верный.

Источник

Прямой, обратный и дополнительный коды двоичного числа

Прямой код двоичного числа
Обратный код двоичного числа
Дополнительный код двоичного числа

операции с числами в специальных кодах. Pryamoy obratnyiy i dopolnitelnyiy kod. операции с числами в специальных кодах фото. операции с числами в специальных кодах-Pryamoy obratnyiy i dopolnitelnyiy kod. картинка операции с числами в специальных кодах. картинка Pryamoy obratnyiy i dopolnitelnyiy kod. Арифметические операции на сумматорах прямого, обратного и дополнительного кода
Мы знаем, что десятичное число можно представить в двоичном виде. К примеру, десятичное число 100 в двоичном виде будет равно 1100100, или в восьмибитном представлении 0110 0100. А как представить отрицательное десятичное число в двоичном виде и произвести с ним арифметические операции? Для этого и предназначены разные способы представления чисел в двоичном коде.
Сразу отмечу, что положительные числа в двоичном коде вне зависимости от способа представления (прямой, обратный или дополнительный коды) имеют одинаковый вид.

Прямой код

операции с числами в специальных кодах. Znakovyiy razryad pryamogo koda. операции с числами в специальных кодах фото. операции с числами в специальных кодах-Znakovyiy razryad pryamogo koda. картинка операции с числами в специальных кодах. картинка Znakovyiy razryad pryamogo koda. Арифметические операции на сумматорах прямого, обратного и дополнительного кода

Обратный код

Для неотрицательных чисел обратный код двоичного числа имеет тот же вид, что и запись неотрицательного числа в прямом коде.
Для отрицательных чисел обратный код получается из неотрицательного числа в прямом коде, путем инвертирования всех битов (1 меняем на 0, а 0 меняем на 1).
Для преобразования отрицательного числа записанное в обратном коде в положительное достаточного его проинвертировать.

операции с числами в специальных кодах. Dvoichnoe chislo v obratnom kode. операции с числами в специальных кодах фото. операции с числами в специальных кодах-Dvoichnoe chislo v obratnom kode. картинка операции с числами в специальных кодах. картинка Dvoichnoe chislo v obratnom kode. Арифметические операции на сумматорах прямого, обратного и дополнительного кода

Арифметические операции с отрицательными числами в обратном коде:

Дополнительный код

В дополнительном коде (как и в прямом и обратном) старший разряд отводится для представления знака числа (знаковый бит).

операции с числами в специальных кодах. Predstavlenie chisel v dopolnitelnom kode. операции с числами в специальных кодах фото. операции с числами в специальных кодах-Predstavlenie chisel v dopolnitelnom kode. картинка операции с числами в специальных кодах. картинка Predstavlenie chisel v dopolnitelnom kode. Арифметические операции на сумматорах прямого, обратного и дополнительного кода

операции с числами в специальных кодах. Dopolnitelnyiy kod. операции с числами в специальных кодах фото. операции с числами в специальных кодах-Dopolnitelnyiy kod. картинка операции с числами в специальных кодах. картинка Dopolnitelnyiy kod. Арифметические операции на сумматорах прямого, обратного и дополнительного кода

Арифметические операции с отрицательными числами в дополнительном коде

Вывод:
1. Для арифметических операций сложения и вычитания положительных двоичных чисел наиболее подходит применение прямого кода
2. Для арифметических операций сложения и вычитания отрицательных двоичных чисел наиболее подходит применение дополнительного кода

операции с числами в специальных кодах. rating on. операции с числами в специальных кодах фото. операции с числами в специальных кодах-rating on. картинка операции с числами в специальных кодах. картинка rating on. Арифметические операции на сумматорах прямого, обратного и дополнительного кодаоперации с числами в специальных кодах. rating on. операции с числами в специальных кодах фото. операции с числами в специальных кодах-rating on. картинка операции с числами в специальных кодах. картинка rating on. Арифметические операции на сумматорах прямого, обратного и дополнительного кодаоперации с числами в специальных кодах. rating on. операции с числами в специальных кодах фото. операции с числами в специальных кодах-rating on. картинка операции с числами в специальных кодах. картинка rating on. Арифметические операции на сумматорах прямого, обратного и дополнительного кодаоперации с числами в специальных кодах. rating on. операции с числами в специальных кодах фото. операции с числами в специальных кодах-rating on. картинка операции с числами в специальных кодах. картинка rating on. Арифметические операции на сумматорах прямого, обратного и дополнительного кода операции с числами в специальных кодах. rating half. операции с числами в специальных кодах фото. операции с числами в специальных кодах-rating half. картинка операции с числами в специальных кодах. картинка rating half. Арифметические операции на сумматорах прямого, обратного и дополнительного кода(34 голосов, оценка: 4,68 из 5)

Источник

Понятие о специальном кодировании чисел

операции с числами в специальных кодах. dark fb.4725bc4eebdb65ca23e89e212ea8a0ea. операции с числами в специальных кодах фото. операции с числами в специальных кодах-dark fb.4725bc4eebdb65ca23e89e212ea8a0ea. картинка операции с числами в специальных кодах. картинка dark fb.4725bc4eebdb65ca23e89e212ea8a0ea. Арифметические операции на сумматорах прямого, обратного и дополнительного кода операции с числами в специальных кодах. dark vk.71a586ff1b2903f7f61b0a284beb079f. операции с числами в специальных кодах фото. операции с числами в специальных кодах-dark vk.71a586ff1b2903f7f61b0a284beb079f. картинка операции с числами в специальных кодах. картинка dark vk.71a586ff1b2903f7f61b0a284beb079f. Арифметические операции на сумматорах прямого, обратного и дополнительного кода операции с числами в специальных кодах. dark twitter.51e15b08a51bdf794f88684782916cc0. операции с числами в специальных кодах фото. операции с числами в специальных кодах-dark twitter.51e15b08a51bdf794f88684782916cc0. картинка операции с числами в специальных кодах. картинка dark twitter.51e15b08a51bdf794f88684782916cc0. Арифметические операции на сумматорах прямого, обратного и дополнительного кода операции с числами в специальных кодах. dark odnoklas.810a90026299a2be30475bf15c20af5b. операции с числами в специальных кодах фото. операции с числами в специальных кодах-dark odnoklas.810a90026299a2be30475bf15c20af5b. картинка операции с числами в специальных кодах. картинка dark odnoklas.810a90026299a2be30475bf15c20af5b. Арифметические операции на сумматорах прямого, обратного и дополнительного кода

операции с числами в специальных кодах. caret left.c509a6ae019403bf80f96bff00cd87cd. операции с числами в специальных кодах фото. операции с числами в специальных кодах-caret left.c509a6ae019403bf80f96bff00cd87cd. картинка операции с числами в специальных кодах. картинка caret left.c509a6ae019403bf80f96bff00cd87cd. Арифметические операции на сумматорах прямого, обратного и дополнительного кода

Правило представления Q-ичного кода числа в прямом коде имеет вид:
операции с числами в специальных кодах. image013. операции с числами в специальных кодах фото. операции с числами в специальных кодах-image013. картинка операции с числами в специальных кодах. картинка image013. Арифметические операции на сумматорах прямого, обратного и дополнительного кода

где хi— значение цифры в i-м разряде исходного кода.

Здесь старший бит несет информацию о знаке числа. Если он принимает значение 0, то знак числа «+» ; если значение 1 — то знак числа «-».

Например, для двоичного кода

При представлении чисел в прямом коде реализация арифметических операций в ЭВМ должна предусматривать различные действия с модулями чисел в зависимости от их знаков. Так, сложение в прямом коде чисел с одинаковыми знаками выполняется достаточно просто. Числа складываются и сумме присваивается код знака слагаемых. Значительно более сложной является операция алгебраического сложения в прямом коде чисел с различными знаками. В этом случае приходится определять большее по модулю число, производить вычитание чисел и присваивать разности знак большего по модулю числа. Для упрощения выполнения операций алгебраического сложения в ЭВМ используются специальные коды, позволяющие свести эту операцию к операции арифметического сложения. В качестве специальных в ЭВМ применяются обратный и дополнительный коды. Они образуются из прямых кодов чисел, причем специальный код положительного числа равен его прямому коду.

Для обозначения обратного кода числа Х(q) используется запись вида [Х(q)]обр.
Правило представления q-ичного кода числа в обратном коде имеет вид:
операции с числами в специальных кодах. image014. операции с числами в специальных кодах фото. операции с числами в специальных кодах-image014. картинка операции с числами в специальных кодах. картинка image014. Арифметические операции на сумматорах прямого, обратного и дополнительного кода

операции с числами в специальных кодах. image015. операции с числами в специальных кодах фото. операции с числами в специальных кодах-image015. картинка операции с числами в специальных кодах. картинка image015. Арифметические операции на сумматорах прямого, обратного и дополнительного кода

где: q — основание системы счисления;
xj значение цифры в i-ом разряде исходного кода.

Для двоичной системы счисления, если х = 1, то операции с числами в специальных кодах. image016. операции с числами в специальных кодах фото. операции с числами в специальных кодах-image016. картинка операции с числами в специальных кодах. картинка image016. Арифметические операции на сумматорах прямого, обратного и дополнительного кодаи наоборот. Отсюда можно сформулировать частное правило образования обратного кода для отрицательных двоичных чисел.

Для преобразования прямого кода двоичного отрицательного числа в обратный код и наоборот необходимо знаковый разряд оставить без изменения, а в остальных разрядах нули заменить на единицы, а единицы на нули.

Таким образом, для преобразования прямого кода q-ичного отрицательного числа в дополнительный необходимо образовать его в обратный код и в младший разряд добавить единицу.

Например, для двоичных чисел:

операции с числами в специальных кодах. image018. операции с числами в специальных кодах фото. операции с числами в специальных кодах-image018. картинка операции с числами в специальных кодах. картинка image018. Арифметические операции на сумматорах прямого, обратного и дополнительного кода

операции с числами в специальных кодах. image019. операции с числами в специальных кодах фото. операции с числами в специальных кодах-image019. картинка операции с числами в специальных кодах. картинка image019. Арифметические операции на сумматорах прямого, обратного и дополнительного кода

При выполнении операции алгебраического сложения перед преобразованием прямых кодов слагаемых в специальные необходимо их выровнять по числу разрядов, если число разрядов слагаемых различно. Кроме того, в некоторых случаях может произойти переполнение разрядов сетки. Признаком переполнения разрядной сетки является следующая комбинация цифр в знаковых разрядах слагаемых и результата:

Результат сложения специальных кодов чисел при переполнении разрядной сетки является неверным.

Источник

Использование специальных кодов при выполнении операций сложения и вычитания чисел в естественной форме

Понятие кодов в цифровых системах (ЦС).

В ЦС, с целью упрощения устройств, выполняющих арифметические операции, применяют специальные коды для представления чисел, в которых для изображения числа и его знака используются цифры двоичной системы счисления. К таким кодам относят прямой, обратный и дополнительный коды, которые называют ещё машинными кодами чисел.

Специальное кодирование чисел

Известно, что при представлении чисел в прямом коде реализация операций сложения и вычитания в ЦС должна предусматривать различные действия с модулями чисел в зависимости от их знаков. Сложение в прямом коде с одинаковыми знаками выполняется достаточно просто. Числа складываются и сумме присваивается код знака слагаемых. Значительно более сложной является операция алгебраического сложения прямых кодов чисел с различными знаками. В этом случае приходится определять большее по модулю число, производить вычитание чисел и присваивать коду разности знак большего по модулю числа. Для упрощения выполнения операции алгебраического сложения чисел в ЦС, в частности в ЭВМ, используются специальные коды, позволяющие свести эту операцию к операции арифметического сложения специальных кодов. В качестве специальных в ЭВМ применяются обратный и дополнительный коды. Для представления чисел в специальном коде используется дополнительный разряд с определенным весом. В качестве дополнительного обычно используется знаковый разряд прямого кода.

Правило 1.Специальный код положительного числа совпадает с его прямым кодом и, наоборот, прямой код положительного числа совпадает с его специальным кодом.

Обратный код числа

Для двоичного числа можно сказать, что обратный код, это специальный код, инвертированный во всех разрядах, кроме знакового

Правило 2. Для преобразования q-ичного кода или прямого q-ичного кода отрицательного числа в обратный код или наоборот для преобразования обратного кода отрицательного числа в прямой код необходимо в дополнительный (знаковый) разряд записать цифру 1, а в цифровые разряды записать коэффициенты xi, определяемые из соотношения:

Пример 1.21. Образовать обратные коды чисел:

Решение. 1. Поскольку числа положительные, то в соответствии с правилом 1 их обратные коды равны прямым кодам: [X10]ок = 0.95.28; [X16]ок = 0.A5.1C; [X8]ок = 0.63.27; [X2]ок=0.101.011.

2. Так как числа отрицательные, то в соответствии с правилом 2 их обратные коды равны:

Пример 1.22. Образовать прямые и q-ичные коды чисел, если их обратные коды равны:

Решение. 1. Так как исходные коды положительные, то в соответствии с правилом 1:

2. Поскольку исходные коды отрицательные, то в соответствии с правилом 2 [X10]пк=1.24.73; X10=-24,73; [X16]пк=1.AB.5A; X16=-AB,5A; [X8]пк =1.40.52; X8=-40,52; [X2]пк=1.110.01; X2=-110,01. Поскольку для двоичной СС (q-1)=1, то из правила 2 следует частное правило преобразования кодов двоичных чисел в обратные коды и наоборот.

Правило 3. Для преобразования двоичного кода или прямого кода двоичного отрицательного числа в обратный код и наоборот для преобразования обратного кода отрицательного числа в прямой код, необходимо в дополнительный (знаковый) разряд записать цифру 1 и во всех цифровых разрядах заменить нули на единицы, а единицы на нули.

Таким, образом, из правила 3 следует, что для образования обратного кода отрицательного двоичного числа необходимо заменить значения цифровых разрядов на обратные. Это и обусловило название этого специального кода.

Дополнительный код

Служит для унификации операций сложения и вычитания.

Другими словами, дополнительный код, это дополнение кода отрицательного числа до основания q (Например, для двоичного числа дополнение до основания 2. В результате каждый разряд отрицательного числа инвертируем, а к последнему разряду добавляем 1).

Правило 4. Для преобразования q-ичного кода или прямого q-ичного кода отрицательного числа в дополнительный код или наоборот для преобразования дополнительного кода отрицательного числа в прямой код необходимо в дополнительный (знаковый) разряд записать цифру 1, а в цифровые разряды записать коэффициенты xi, определяемые из соотношений:

Из определения дополнительного кода и правила 4 видно, что дополнительный код отрицательного числа отличается от обратного на единицу младшего разряда.

Пример 1.23. Образовать дополнительные коды чисел:

Решение. 1. Поскольку числа положительные, то в соответствии с правилом 1 их дополнительные коды равны прямым кодам:

2. Так как числа отрицательные, то в соответствии с правилом 4 их дополнительные коды равны:

Пример 1.24. Образовать прямые и q-ичные коды чисел, если:

Решение. Поскольку исходные коды отрицательны, то в соответствии с правилом 4: [X10]=1.45.9 и X10=-45,92; [X16]пк=1.A5.4E и X16=-A5,4E; [X8]пк=1.21.53 и X8 =-21,53; [X2]пк=1.100.11 и X2=-100,11.

Заметим, что специальные коды не изменяют значения числа.

операции с числами в специальных кодах. image002. операции с числами в специальных кодах фото. операции с числами в специальных кодах-image002. картинка операции с числами в специальных кодах. картинка image002. Арифметические операции на сумматорах прямого, обратного и дополнительного кода(1.28)

Значение числа Xq можно определить по его специальному коду, если воспользоваться выражением (1.28), где xд— значение дополнительного разряда специального кода; xi— значение i-го цифрового разряда специального кода.

Решение. Пользуясь выражением (1.28) и учитывая, что для данного примера n = r = 2, получим:

Таким образом, дополнительный код двоичного числа образуется из прямого кода инверсией и добавлением единицы к младшему разряду. Если результат получился отрицательным, то чтобы получить прямой код необходимо осуществить инверсию, а затем добавить единицу к младшему разряду. Единица переполнения знакового разряда при использовании дополнительного кода отбрасывается.

Использование специальных кодов при выполнении операций сложения и вычитания чисел в естественной форме

Специальные коды используются для осуществления операций сложения и вычитания.

Однако, при осуществлении указанных операций происходит переполнение разрядной сетки, в результате чего получаем ошибку. Для устранения данного недостатка используют модифицированный специальные коды.

Дата добавления: 2017-11-21 ; просмотров: 609 ; ЗАКАЗАТЬ НАПИСАНИЕ РАБОТЫ

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *