Представление числовых данных в двоичном коде
В десятичной системе счисления используется десять символов (0 1 2 3 5 6 8 9), в двоичной – два (0 1), в восьмеричной – восемь (0 1 2 3 4 5 6 7), в шестнадцатеричной - шестнадцать, причем первые 10 символов совпадают по написанию с символами десятичной системы счисления, а для обозначения оставшихся шести применяются большие латинские буквы ( A, B, C, 𝐷, E, F ).
Преобразование из десятичной в прочие системы счисления проводится с помощью правил умножения (для дробной части) и деления (для целой части). При этом целая и дробная части переводятся отдельно.
Для того чтобы перевести число из двоичной системы в шестнадцатеричную, необходимо от десятичной запятой вправо и влево выделить группы по четыре цифры, и каждую группу независимо от других перевести в одну шестнадцатеричную цифру.
Если тетрады получаются неполными, то их дополняют нулями слева (в целой части) и справа (в дробной части)
Аналогичное правило для восьмеричной системы, при этом двоичную запись числа группируют по три цифры и каждую группу независимо от других переводят в одну восьмеричную цифру.
Одним из способов представления в памяти ЭВМ целых положительных чисел является смешанная «двоично-десятичная» система счисления, где для хранения каждого десятичного знака необходим полубайт (4 бита) и десятичные цифры от 0 до 9 представляются соответствующими двоичными числами от 0000 до 1001. Этот способ является неудобным, так как для записи одного числа требуется достаточно большой объем памяти.
Другим способом представления чисел в памяти ЭВМ является его кодирование в двоичной системе счисления. Так, для получения кода положительного (без знака) числа в разрядной ячейке памяти достаточно перевести его в двоичную систему счисления и дополнить полученный результат слева нулями до К разрядов. Максимальному представимому числу соответствуют все единицы во всех разрядах ячейки (двоичное число состоящее из К единиц). Минимальное число представляется нулями.
Прямой код используется для представления положительных чисел в памяти ЭВМ и совпадает с представлением числа в двоичной системе счисления. Прямой код отрицательного целого числа отличается от прямого кода соответствующего положительного числа содержимым знакового разряда. Значение знакового разряда для положительных чисел 0 для отрицательных 1.
Обычно в ЭВМ отрицательные числа представляются дополнительным кодом.
Для отрицательного числа дополнительный код может быть получен так:
• записать прямой код модуля числа;
• инвертировать его (заменить единицы нулями, нули – едини-цами), получив обратный код исходного числа;
• прибавить к обратному коду единицу.
При получении числа по его дополнительному коду необходимо определить его знак. Если число окажется положительным (в старшем разряде 0), то необходимо перевести его код в десятичную систему счисления. Если отрицательное число необходимо:
• вычесть из кода числа 1;
• инвертировать код;
• перевести в десятичную систему счисления;
• записать полученное число со знаком минус.
Несколько иной способ применяется для представления в памяти ЭВМ вещественных (дробных) чисел. В памяти ЭВМ они могут быть представлены в формате с фиксированной или плавающей запятой.
Для представления чисел в формате с фиксированной запятой выделяется некоторая область памяти, состоящая из нескольких разрядов. При этом крайний левый разряд является знаковым, а оставшиеся делят на целую и дробную части.
Таким образом, для получения представления действительного числа в памяти ЭВМ необходимо:
• перевести модуль данного числа в двоичную систему;
• нормализовать двоичное число, т.е. записать в виде 2;
• прибавить к порядку смещение и перевести смещенный порядок в двоичную систему счисления;
• учитывая знак заданного числа (0 – положительное; 1 – отрицательное), выписать его представление в памяти ЭВМ.
Реляционные базы данных.
Реляционная база данных – это совокупность отношений, содержащих всю информацию, которая должна храниться в БД. Однако пользователи могут воспринимать такую базу данных как совокупность таблиц.
Основные правила составления таблиц.
1. Каждая таблица состоит из однотипных строк и имеет уникальное имя.
2. Строки имеют фиксированное число полей (столбцов) и значений (множественные поля и повторяющиеся группы недопустимы), т.е., в каждой позиции таблицы на пересечении
строки и столбца всегда имеется в точности одно значение или ничего.
3. Строки таблицы обязательно отличаются друг от друга хотя бы единственным значением, что позволяет однозначно идентифицировать любую строку такой таблицы.
4. Столбцам таблицы однозначно присваиваются имена, и в каждом из них размещаются однородные значения данных (даты, фамилии, целые числа или денежные суммы).
5. Полное информационное содержание базы данных представляется в виде явных значений данных и такой метод представления является единственным. В частности, не существует каких-либо специальных «связей» или указателей, соединяющих одну таблицу с другой.
6. При выполнении операций с таблицей ее строки и столбцы можно обрабатывать в любом порядке безотносительно к их информационному содержанию. Этому способствует наличие имен таблиц и их столбцов, а также возможность выделения любой их строки или любого набора строк с указанными признаками.
Модель «сущность-связь» используется на ранних стадиях проектирования БД является концептуальной моделью и не учитывает особенности конкретной СУБД (допустимые типы и наименования полей и таблиц, ограничения целостности и т.п.).
Алгоритм однозначного преобразования модели «сущность-связь» в реляционную модель данных (т.е. осуществляется переход от инфологического моделирования к логическому проектированию модели реляционной БД).
1. Каждой сущности модели «сущность-связь» ставится в соответствие отношение реляционной модели. При этом на имена отношений накладываются ограничения, присущие конкретной СУБД.
2. Каждый атрибут сущности становится атрибутом соответствующего отношения. На имена атрибутов отношения также накладываются ограничения выбранной СУБД. Для каждого атрибута задается конкретный допустимый в СУБД тип данных и обязательность или необязательность данного атрибута.
3. Первичный ключ сущности становится первичным ключом соответствующего отношения. Атрибуты, входящие в первичный ключ отношения, автоматически получают свойство отсутствия неопределенных значений.
4. В каждое отношение, соответствующее сущности со стороны «многие» (связь 1:N), добавляется набор атрибутов сущности со стороны «один», являющихся первичным ключом сущности со стороны «один». В отношении, соответствующим сущности со стороны «многие», этот набор атрибутов становится внешним (чужим) ключом.
5. Для моделирования необязательного класса принадлежности у атрибутов, соответствующих внешнему ключу, устанавливается свойство допустимости неопределенных значений. При обязательном классе принадлежности атрибуты получают свойство отсутствия неопределенных значений.