Сложение чисел с плавающей точкой




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

А = m1 * qр1

В = m2 * qр2

где m1, m2 - мантиссы, р1 и р2 - порядки.

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

Робщ = max (p1 * p2)

В = (m2`)* qробщ

C = A + B = m * qp = m1 * qробщ + m2`*qробщ= (m1 +(m2`))* qробщ

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

Пример:

0.4726*102 + 0.9132*100 = 102(0.4726 + 0.0091) = 0.4817*102
0.10112*2-1 + 0.10112*21 = 21*(00.00102 + 00.11012) = 01.00002*21 = 0.10002*22

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

При сложении чисел в нормальной форме можно выделить 4 этапа:

  1. Уравниваются порядки слагаемых. Меньший порядок увеличивается до большего, а мантисса преобразуемого числа сдвигается вправо на соответствующее число разрядов. С этой целью производится вычитание порядков чисел. Знак и модуль разности будут определять, соответственно, какое из слагаемых нужно преобразовать и на сколько нужно сдвинуть мантиссу.
  2. Производится преобразование мантисс слагаемых в один из модифицированных кодов, дополнительный или обратный, затем производится сложение мантисс по правилу сложения чисел с плавающей точкой.
  3. В случае необходимости производится нормализация результатов.
  4. Результат переводится в прямой код, ему приписывается общий порядок и округляется.

Умножение чисел

В двоичной системе счисления таблицы умножения описывают функцию коньюкции:

A B C
     
     
     
     

При умножении коньюкция составляет матрицу размером N * N.

Пусть N = 4:

        A        
        B        
                 
                 
                 
                 
                 
                 
                 
C 27 26 25 24 23 22 21 20

Разряды сомножителей коньюкции (с 1-го по 4-ый) обозначены двузначными числами, состоящими из номеров разряда сомножителей, а для произведения С указаны веса его разрядов от 20 до 27. Матрица имеет симметричный вид.

Наклонные линии, содержащие коньюкции, являются произведением одного сомножителя на разряд другого. Умножение может выполняться, к примеру, по схеме:

 

Здесь А и В - множители, N - их разрядность. Начальное значение суммы S устанавливается в блоке 3. В блоке 4 организуется цикл из N итераций (повторений), выполняемых за N тактов. Блок 5 разрешает работу блока 6 лишь при значении В1 = 1 и реализует функцию коньюкторов, умножающих разряды множимого А на первый младший разряд Вi множителя В. Блок 7 сдвигает на 1 позицию вправо числа В и S, при этом место младшего разряда В1 множителя занимает следующий по старшинству разряд. По окончанию всех итераций блок 8 выводит S - результат умножения.

В данном способе вычисления выполняются начиная с младшего разряда множителя В с изменением взаимного положения чисел S и А путём сдвига суммы S.

Деление чисел

Операция деления выполняется над числами А - делимым и В - делителем. Её результатом является частное С и остаток D.

А = ВС + D, | D | < В

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

 

Если условие А < В не выполняется, то число А умножается на величину В, при этом значение частного увеличивается на 1 и происходит возврат к блоку 4. Если выполняется условие А < В, мы выводим частное С и остаток D.

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

Точностное деление определяет частное с заданным количеством разрядов, а остаток игнорируется. Такое деление характеризуется алгоритмом с восстановлением остатка.

 

9. Система остаточных классов (СОК) – это непозиционная система счисления, числа в которой представляются остатками от деления на выбранную систему оснований Р1, Р2,...,Рn и являются взаимнопростыми числами. Операции сложения, вычитания и умножения над числами в СОК производятся независимо по каждому основанию без переносов между разрядами (основаниями). Диапазон представимых чисел P=P1ЧP2Ч...ЧPn [4].
Если задан ряд положительных взаимнопростых чисел Р1, Р2,...,Рn, то целое положительное число А, представленное в виде набора наименьших положительных остатков (вычетов) от деления числа А на выбранные основания Р1, Р2,...,Рn, можно записать в виде А=(a1, a2,...,an).
Рассмотрим примеры выполнения операций сложения и умножения чисел в СОК. Пусть основаниями системы являются Р1=2, Р2=3, Р3=5, Р4=7. Диапазон представимых чисел в данной системе Р=2Ч3Ч5Ч7=210. Требуется сложить числа А=34 и В=87. По выбранным основаниям числа А и В в СОК будут иметь вид А=(0, 1, 4, 6), В=(1, 0, 2, 3).
Сложим числа А и В

Легко проверить, что число А+В, представленное по выбранным основаниям как (1, 1, 1, 2), равно 121.
Пусть требуется умножить числа А=17 и В=8. А=(1, 2, 2, 3), В=(0, 2, 3, 1).

В самом деле, число АхВ, представленное по выбранным основаниям как (0, 1, 1, 3), равно 136.
Такие операции, как деление, сравнение и др., требующие информации о величине всего числа, в СОК выполняются по более сложным алгоритмам. И в этом заключается существенный недостаток данной системы счисления, сдерживающий ее широкое применение в качестве компьютерной арифметики. Однако сегодня даже в самых современных компьютерах при работе с большими и супербольшими числами используют СОК, ибо только эта арифметика позволяет получать результаты вычислений в реальном времени. В таких случаях в качестве оснований СОК применяют величины, близкие к 2m (m – двоичная разрядность компьютера), например 2m-1-1, 2m-1, 2m-1+1 и т.д. Компьютер вычисляет результат по одному из модулей за один проход. Другие области применения СОК – помехоустойчивое кодирование, криптография и т.п.

 

10. Бу́лева фу́нкция (или логи́ческая функция, или функция а́лгебры ло́гики) от n переменных — в дискретной математике — отображение BnB, где B = {0,1} — булево множество. Элементы булева множества 1 и 0 обычно интерпретируют как логические значения «истинно» и «ложно», хотя в общем случае они рассматриваются как формальные символы, не несущие определённого смысла. Неотрицательное целое число n называют арностью или местностью функции, в случае n = 0 булева функция превращается в булеву константу. Элементы декартова произведения Bn называют булевыми векторами. Множество всех булевых функций от любого числа переменных часто обозначается P 2, а от n переменных — P 2(n). Булевы функции названы так по фамилии математика Джорджа Буля.

Каждая булева функция арности n полностью определяется заданием своих значений на своей области определения, то есть на всех булевых векторах длины n. Число таких векторов равно 2 n. Поскольку на каждом векторе булева функция может принимать значение либо 0, либо 1, то количество всех n -арных булевых функций равно 22 n . Поэтому в этом разделе рассматриваются только простейшие и важнейшие булевы функции. То, что каждая булева функция задаётся конечным массивом данных, позволяет представлять их в виде таблицПрактически все булевы функции малых арностей (0, 1, 2 и 3) сложились исторически и имеют конкретные имена. Если значение функции не зависит от одной из переменных (то есть строго говоря для любых двух булевых векторов, отличающихся лишь в значении этой переменной, значение функции на них совпадает), то эта переменная называется фиктивной.

 

12. Самой первой и наиболее простой, хотя и довольно грубой моделью нейрона является модель "устройства с пороговой логикой" - the Threshold Logic Unit, TLU, более известная по именам американских ученых, разработавших ее в 1943-44 годах. Суть ее состоит в следующем (рис.3).

Рис.3. TLU

Все воздействия и сигналы, передаваемые по сети, кодируются в двоичной форме, по аналогии с цифровыми ЭВМ. Синапсы интерпретируются как модули, выполняющие операцию умножения воздействий на весовые коэффициенты. Эндоплазма нейрона интерпретируется как аддитивный сумматор всех воздействий, помноженных на соответствующие весовые коэффициенты. Полученное результирующее воздействие сравнивается с некоторой пороговой величиной , и в случае ее превышения выдается сигнал, уходящий по (афферентному) аксону ("1"); в противном случае считается, что таковой отсутствует ("0"). Недостатки этой модели:

  • Двоичная интерпретация выходного сигнала не учитывает частоты сигналов, которая играет далеко не последнюю роль в реальных нейросистемах;
  • В реальных биосистемах практически невозможно встретить скачкообразное изменение величин; кроме того, эта (ступенчатая) модель затрудняет решение множества задач на проектируемых по подобию с живыми нейронами нейроподобных элементах в искусственных нейросетях, реализуемых аппаратно либо эмулируемых программно.

В данном случае работу сети можно описать уравнениями:

  • f = 1, если a > ;
  • f = 0, если a <= .

 

Мажорита́рный элеме́нт (мажоритарный клапан, переключатель по большинству, ППБ) — логический элемент из класса пороговых[1], с чётным или нечётным числом входов и одним выходным сигналом, значение которого совпадает со значением, на большинстве входов.[2] При чётном числе входов большинством считается n/2+1, соответственно n/2 к большинству не относится[3]. Таким образом, элемент работает по «принципу большинства»: если на большинстве входов будет сигнал «1», то и на выходе схемы установится сигнал «1»; и наоборот, если на большинстве входов будет сигнал «0», то и на выходе установится «0».[1]

В бинарных двоичных функциях с унарным выходом, в которых только два входа, мажоритарный клапан «вырождается» в логическую функцию 2И, так как большинством из двух является n/2+1=2/2+1=1+1=1.

Под мажоритарным элементом также понимают устройство, реализующее метод мажоритарного резервирования[4]. Существующие методы вводят весовые коэффициенты для каждого входного сигнала (пороговые элементы), предысторию и прочие адаптивные алгоритмы.[4]

Мажоритарные элементы используются в цифровых высоконадёжных системах и устройствах, например, в системах резервирования[5][4], в помехоустойчивых телекоммуникационных системах[6][7].

Поскольку нечеткие множества описываются функциями принадлежности, а t-нормы и k-нормы обычными математическими операциями, можно представить нечеткие логические рассуждения в виде нейронной сети. Для этого функции принадлежности надо интерпретировать как функции активации нейронов, передачу сигналов как связи, а логические t-нормы и k-нормы, как специальные виды нейронов, выполняющие математические соответствующие операции. Существует большое разнообразие подобных нейро-нечетких сетей neuro-fuzzy network (англ.). Например, ANFIS (Adaptive Neuro fuzzy Inference System) - адаптивная нейро-нечеткая система вывода.[2] (англ.)

Она может быть описана в универсальной форме аппроксиматоров как

,

кроме того, этой формулой могут быть описаны также некоторые виды нейронных сетей, такие как радиально базисные сети (RBF), многослойные персептроны (MLP), а также вейвлеты и сплайны.

 

13. Булевы функции одной переменной.

При n = 1 число булевых функций равно 221 = 22 = 4. Определение этих функций содержится в следующей таблице.

Таблица значений булевых функций от одной переменной:

x   x  
         
         

Названия булевых функций от одной переменной:

Обозначение Название
  тождественный ноль, тождественная ложь, тождественное "НЕТ"
, x, x' отрицание, логическое "НЕТ", "НЕ", "НИ"
x тождественная функция, логическое "ДА"
  тождественная единица, тождественная истина, тождественное "ДА", тавтология

Дизъю́нкция — (лат. disjunctio - разобщение) логическая операция, по своему применению максимально приближённая к союзу «или» в смысле «или то, или это, или оба сразу». Синонимы: логи́ческое «ИЛИ», включа́ющее «ИЛИ», логи́ческое сложе́ние, иногда просто «ИЛИ».

В булевой алгебре дизъюнкция — это функция двух, трёх или более переменных (они же — операнды операции, они же — аргументы функции).
Правило: результат равен , если все операнды равны ; во всех остальных случаях результат равен .

Таблица истинности

Конъю́нкция (от лат. conjunctio союз, связь) — логическая операция, по своему применению максимально приближённая к союзу "и". Синонимы: логи́ческое "И", логи́ческое умноже́ние, иногда просто "И".

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

.

В булевой алгебре конъюнкция — это функция двух, трёх или более переменных (они же — операнды операции, они же — аргументы функции). Переменные могут принимать значения из множества . Результат также принадлежит множеству . Вычисление результата производится по простому правилу, либо по таблице истинности. Вместо значений может использоваться любая другая пара подходящих символов, например или или "ложь", "истина".
Правило: результат равен , если все операнды равны ; во всех остальных случаях результат равен .

Таблицы истинности:
для бинарной конъюнкции

Штрих Ше́ффера — бинарная логическая операция, булева функция над двумя переменными.

Таблица значений

X Y X|Y
     
     
     
     

Как и любую булеву операцию, штрих Шеффера можно выразить через отрицание и дизъюнкцию:

либо через отрицание и конъюнкцию

Импликация (лат. implicatio - связь) — бинарная логическая связка, по своему применению приближенная к союзам «еслито …».

Импликация записывается как посылка следствие; применяются также стрелки другой формы и направленные в другую сторону (остриё всегда указывает на следствие).

Суждение, выражаемое импликацией, выражается также следующими способами:

  • Посылка является условием, достаточным для выполнения следствия;
  • Следствие является условием, необходимым для истинности посылки.
  • В булевой логике импликация — это функция двух переменных (они же — операнды операции, они же — аргументы функции). Переменные могут принимать значения из множества . Результат также принадлежит множеству . Вычисление результата производится по простому правилу, либо по таблице истинности. Вместо значений может использоваться любая другая пара подходящих символов, например или или «ложь», «истина».

Импликация как булева функция ложна лишь тогда, когда посылка истинна, а следствие ложно. Иными словами, импликация — это сокращённая запись для выражения .

прямая импликация (от a к b) (материальная импликация, материальный кондиционал)

  • если , то истинно (1),

обратная импликация (от b к a, )

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

Стре́лка Пи́рса (символ Лукасевича[ источник не указан 833 дня ]) — бинарная логическая операция, булева функция над двумя переменными. Введена в рассмотрение Ч. Пирсом (Сh. Peirce).

Стрелка Пирса, обычно обозначаемая ↓, задаётся следующей таблицей истинности:

A B AB
     
     
     
     

Таким образом, высказывание «A ↓ B» означает «ни A, ни B».

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

xxx

x & y ≡ (xx) ↓ (yy)

xy ≡ (xy) ↓ (xy)

xy ≡ ((xx) ↓ y) ↓ ((xx) ↓ y)

 

Основные тождества

В данном разделе повторяются свойства и аксиомы, описанные выше с добавлением ещё нескольких.

Сводная таблица свойств и аксиом, описанных выше:

; . 1 коммутативность переместительность
; . 2 ассоциативность сочетательность
3.1 конъюнкция относительно дизъюнкции 3.2 дизъюнкция относительно конъюнкции 3 дистрибутивность распределительность
; . 4 комплементность дополнительность (свойства отрицаний)
; . 5 законы де Моргана
; . 6 законы поглощения
; . 7 Блейка-Порецкого
; . 8 Идемпотентность
.   9 инволютивность отрицания
; . 10 свойства констант
; .
дополнение 0 есть 1 ; дополнение 1 есть 0 .
; . 11 Склеивание

 

Дизъюнкти́вная норма́льная фо́рма (ДНФ) в булевой логике — нормальная форма, в которой булева формула имеет вид дизъюнкции конъюнкций литералов. Любая булева формула может быть приведена к ДНФ.[1] Для этого можно использовать закон двойного отрицания, закон де Моргана, закон дистрибутивности. Дизъюнктивная нормальная форма удобна для автоматического доказательства теорем.

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

2) Заменить знак отрицания, относящийся ко всему выражению, знаками отрицания, относящимися к отдельным переменным высказываниям на основании формул:

3) Избавиться от знаков двойного отрицания.

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

Конъюнкти́вная норма́льная фо́рма (КНФ) в булевой логике — нормальная форма, в которой булева формула имеет вид конъюнкции дизъюнкций литералов. Конъюнктивная нормальная форма удобна для автоматического доказательства теорем. Любая булева формула может быть приведена к КНФ.[1] Для этого можно использовать: Закон двойного отрицания, Закон де Моргана, Дистрибутивность.

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

2) Заменить знак отрицания, относящийся ко всему выражению, знаками отрицания, относящимися к отдельным переменным высказываниям на основании формул:

3) Избавиться от знаков двойного отрицания.

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

 

СКНФ (Совершенная Конъюнктивная Нормальная Форма) — это такая КНФ, которая удовлетворяет трём условиям:

  • в ней нет одинаковых элементарных дизъюнкций
  • в каждой дизъюнкции нет одинаковых пропозициональных букв
  • каждая элементарная дизъюнкция содержит каждую пропозициональную букву из входящих в данную КНФ пропозициональных букв.

СДНФ (Совершенная Дизъюнктивная Нормальная Форма) — это такая ДНФ, которая удовлетворяет трём условиям:

  • в ней нет одинаковых элементарных конъюнкций
  • в каждой конъюнкции нет одинаковых пропозициональных букв
  • каждая элементарная конъюнкция содержит каждую пропозициональную букву из входящих в данную ДНФ пропозициональных букв, причем в одинаковом порядке.

Если в простой дизъюнкции не хватает какой-то переменной (например, z), то добавляем в нее выражение: (это не меняет самой дизъюнкции), после чего раскрываем скобки с использованием распределительного закона:

Таким образом, из КНФ получена СКНФ.

Если в какой-то простой конъюнкции недостает переменной, например, Z, вставляем в нее выражение: ,после чего раскрываем скобки (при этом повторяющиеся дизъюнктные слагаемые не пишем). Например:

Таким образом, из ДНФ получили СДНФ.

 

Законы булевой алгебры

 

В булевой алгебре используются четыре основных закона: переместительный, сочетательный, распределительный, инверсии. Эти законы позволяют проводить эквивалентные преобразования ПФ, записанных с помощью операций НЕ, И, ИЛИ, т. е. приводить выражения ПФ к удобному (более простому) виду. Рассмотрим эти законы. Переместительный закон аналогичен переместительному закону обычной алгебры и записывается в виде: а) для дизъюнкции (3.1) б) для конъюнкции (3.2) Таким образом, от перемены мест слагаемых (сомножителей) их логическая сумма (логическое произведение) не меняется. Сочетательный закон также аналогичен сочетательному закону обычной алгебры и записывается в виде: а) для дизъюнкции (3.3) б) для конъюнкции (3.4) Следовательно, можно группировать переменные, объединенные знаком дизъюнкции или конъюнкции, это не меняет значений ПФ. Распределительный закон записывается в виде: а) для дизъюнкции (3.5) т. е. дизъюнкция переменной и конъюнкции равносильна конъюнкции дизъюнкций этой переменной с сомножителями; б) для конъюнкции (3.6) т. е. конъюнкция переменной и дизъюнкции эквивалентна дизъюнкции конъюнкций этой переменной со слагаемыми. Справедливость выражения (3.5) доказывается путем г составления таблиц истинности для левой и правой частей. Значения этих таблиц совпадают для одинаковых наборов переменных, это и доказывает справедливость (3.5). Закон инверсии: а) для дизъюнкции (3.7) т. е. отрицание дизъюнкции логических переменных эквивалентно конъюнкции отрицаний этих переменных; б) для конъюнкции (3.8) т. е. отрицание конъюнкции переменных эквивалентно дизъюнкции отрицаний этих переменных.

 

Метод Куайна—Мак-Класки — табличный метод минимизации булевых функций, предложенный Уиллардом Куайном и усовершенствованный Эдвардом Мак-Класки. Представляет собой попытку избавиться от недостатков метода Куайна.

Сложность

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

Куб Карно́ — графический способ минимизации переключательных (булевых) функций, обеспечивающий относительную простоту работы с большими выражениями и устранение потенциальных гонок. Представляет собой операции попарного неполного склеивания и элементарного поглощения. Карты Карно рассматриваются как перестроенная соответствующим образом таблица истинности функции. Карты Карно можно рассматривать как определенную плоскую развертку n-мерного булева куба. Не допускается название карта Карно с 2012 года.

Карты Карно были изобретены в 1952 Эдвардом В. Вейчем и усовершенствованы в 1953 Морисом Карно, физиком из «Bell Labs

», и были призваны помочь упростить цифровые электронные схемы.

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

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

Аналогично для КНФ:

Возможность поглощения следует из очевидных равенств

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

Как известно, булевы функции N переменных, представленные в виде СДНФ или СКНФ, могут иметь в своём составе 2 N различных термов. Все эти члены составляют некоторую структуру, топологически эквивалентную N –мерному кубу, причём любые два терма, соединённые ребром, пригодны для склейки и поглощения.

На рисунке изображена простая таблица истинности для функции из двух переменных, соответствующий этой таблице 2-мерный куб (квадрат), а также 2-мерный куб с обозначением членов СДНФ и эквивалентная таблица для группировки термов:

 

25. Геометрическое представление булевых функций

В геометрическом смысле каждый набор значений переменных 12 (,,...,) n xxx можно рассматривать как n -мерный вектор, определяющий точку в n -мерном пространстве [1]. Все множество двоичных наборов значений аргументов образует геометрическое множество вершин

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

 

26.

Логические элементы — устройства, предназначенные для обработки информации в цифровой форме (последовательности сигналов высокого — «1» и низкого — «0» уровней в двоичной логике, последовательность «0», «1» и «2» в троичной логике, последовательности «0», «1», «2», «3», «4», «5», «6», «7», «8» и «9» в десятичной логике). Физически логические элементы могут быть выполнены механическими, электромеханическими (на электромагнитных реле), электронными (на диодах и транзисторах), пневматическими, гидравлическими, оптическими и др.

 

Лог. Схемы - - физ. устройства, реализующие функции ма



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-08-20 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: