Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
GOSv1_3.docx
Скачиваний:
56
Добавлен:
30.03.2015
Размер:
1.9 Mб
Скачать
  1. Представление числовых величин в эвм: позиционные системы счисления; форматы чисел с фиксированной и плавающей точкой; представление в прямом, обратном и дополнительном кодах.

Позиционная система счисления — система счисления, в которой значение каждого числового знака (цифры) в записи числа зависит от его позиции (разряда).

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

Позиционная система счисления обладает рядом свойств:

Для записи числа x в b-ричной системе счисления требуется цифр, где означает взятие целой части числа.

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

3 = 3 — результат сравнения чисел пока не определён;

2 > 1 — первое число больше (независимо от оставшихся цифр).

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

Переводы чисел из n-ричной в десятичную и обратно:

Перевод из десятичной системы счисления

Целая часть

  1. Последовательно делить целую часть десятичного числа на основание, пока десятичное число не станет равно нулю.

  2. Полученные при делении остатки являются цифрами нужного числа. Число в новой системе записывают, начиная с последнего остатка.

Дробная часть

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

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

Перевод в десятичную из n-ричной:

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

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

При записи числа в прямом коде старший разряд является знаковым разрядом. Если его значение равно 0 — то число положительное, если 1 — то отрицательное. В остальных записывается двоичное представление модуля числа. Примеры:

4 =100= 0.0000100

-5 =-101= 1.0000101

9/16=0.1001=0.1001000

-9/16= -0.1001=1.1001000

Недостатки прямого кода:

  1. В прямом коде есть два варианта записи числа 0 (например, 0000 0000 и 1000 0000 в восьмиразрядном представлении).

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

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

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

Отрицательные числа в отрицательном коде записываются ввиде:

(знаковый разряд. Для отрицательных = 1) + (инвертированное число взятое по модулю).

Пример:

- 5 записать в обратном коде в двоичной система счисления:

Т.к. число отрицательное то старший разряд = 1. Число -5 по модулю = 5 = 000 01012. Инвертируем число и припишем знаковый разряд, получим 1111 1010.

Если сложить 5(0000 0101) и -5 (1111 1010) то получится 0 (1111 1111). Если быть совсем точным то -0, но не суть.

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

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

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

  1. Если число, записанное в прямом коде, положительное, то к нему дописывается старший (знаковый) разряд, равный 0, и на этом преобразование заканчивается;

  2. Если число, записанное в прямом коде, отрицательное, то все разряды числа инвертируются, а к результату прибавляется 1. К получившемуся числу дописывается старший (знаковый) разряд, равный 1.

Пример: переведем число -5 в доп код и обратно.

  1. -510 = 1012.

  2. Инвертируем, получим 0102.

  3. Прибавим 1, получим 0112

  4. Припишем слева 1 т.к. число – отрицательное. Окончательный результат: 10112

Переведем обратно:

  1. Инвертируем, получим 01002

  2. Прибавим 1, получим 01012

  3. Если сложить, то что мы получили (5), с его дополнительным кодом (-5) => 0101 + 1011 = 10000. Т.к. используется 4 разряда то 1 отбрасывается, все сошлось, значит преобразования были верными.

Плюсы и минусы дополнительного кода:

Преимущества

  1. Один и тот же регистр может хранить как n-битовое положительное число, так и (n−1)-битовое число со знаком, с общими для обоих форматов операциями сложения, вычитания и левого сдвига.

  2. Более удобная упаковка чисел в битовые поля.

  3. Отсутствие числа «минус ноль».

Недостатки

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

  2. Модуль наибольшего числа не равен модулю наименьшего числа. Пример: знаковое целое 8-битовое. Максимальное число: 12710 == 7F16 == 011111112. Минимальное число: -12810 == 8016,дополнительный код == 100000002,дополнительный код. Соответственно, не для любого числа существует противоположное. Операция изменения знака может потребовать дополнительной проверки.

Число с фиксированной запятой — формат представления вещественного числа в памяти ЭВМ в виде целого числа. Для хранения дробного числа фиксируется разрядная сетка, в которой указано, сколько бит отводится на целую часть числа, а сколько на дробную. Это легко продемонстрировать на рублях. Для хранения числа, соответствующего 123 рублям 56 копейкам необходимо чтобы разрядная сетка была (6,2) в 8 разрядной сетке. Это значит что 6 разрядов отводится на целую часть, а 2 на дробную. И выглядеть в конечном итоге это число будет 000123456. При этом система знает, что число является дробным и последние 2 разряда являются дробной частью числа.

Применение

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

  2. Чтобы обеспечить минимальную поддержку дробных чисел на целочисленном процессоре . Если не решаются некорректные задачи и СЛАУ высокого порядка, фиксированной запятой зачастую достаточно — важно только подобрать подходящую цену (вес) младшего разряда для каждой из величин.

  3. Для записи чисел, которые по своей природе имеют постоянную абсолютную погрешность: координаты в программах вёрстки, денежные суммы. Например, файлы метрики шрифтов TeX используют 32-битный знаковый тип с фиксированной запятой (12,20).

  4. Недостаток фиксированной запятой — очень узкий диапазон чисел, с угрозой переполнения на одном конце диапазона и потерей точности вычислений на другом. Эта проблема и привела к изобретению плавающей запятой

Число с плавающей запятой

Такое число состоит из:

  1. Мантиссы (выражающей значение числа без учёта порядка)

  2. Знака мантиссы (указывающего на отрицательность или положительность числа)

  3. Порядка (выражающего степень основания числа, на которое умножается мантисса)

  4. Знака порядка

Нормальнойформой числа с плавающей запятой называется такая форма, в которой мантисса (без учёта знака) находится на полуинтервале [0; 1) . Число с плавающей запятой, находящееся не в нормальной форме, теряет точность по сравнению с нормальной формой. Такая форма записи имеет недостаток: некоторые числа записываются неоднозначно (например, 0,0001 можно записать в 4 формах — 0,0001·100, 0,001·10−1, 0,01·10−2, 0,1·10−3), поэтому распространена также другая форма записи — нормализованная, в которой мантисса десятичного числа принимает значения [1;10], а мантисса двоичного числа принимает значения от 1 (включительно) до 2 (не включительно) (). В такой форме любое число (кроме 0) записывается единственным образом. Недостаток заключается в том, что в таком виде невозможно представить 0, поэтому представление чисел в информатике предусматривает специальный признак (бит) для числа 0.

В вычислительных машинах показатель степени принято отделять от мантиссы буквой «E» (exponent). Например, число 1,528535047·10−25 в большинстве языков программирования высокого уровня записывается как 1.528535047E-25.

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

0,12 × 0,12 = 0,0144

в нормальной форме представляется в виде

(1,20·10−1) × (1,20·10−1) = (1,44·10−2).

В формате с фиксированной запятой мы бы получили вынужденное округление

0,120 × 0,120 = 0,014.

Мы потеряли крайний правый разряд числа, так как данный формат не позволяет запятой «плавать» по записи числа.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]