Кабардино-Балкарский государственный университет
Опубликован: 09.11.2006 | Доступ: свободный | Студентов: 24324 / 8964 | Оценка: 4.16 / 3.97 | Длительность: 10:45:00
ISBN: 978-5-94774-678-5
Специальности: Программист
Лекция 4:

Системы счисления и действия в них

< Лекция 3 || Лекция 4: 12 || Лекция 5 >

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

Дополнительный код = обратный код + единица в младшем разряде.

Пример.

  1. 10011 \Longrightarrow двоичное число,

    01100 \Longrightarrow обратный код этого двоичного числа,

    01101 \Longrightarrow дополнительный код этого двоичного числа;

  2. 457 \Longrightarrow восьмеричное число,

    321 \Longrightarrow дополнительный код ;

  3. А9 \Longrightarrow шестнадцатеричное число,

    57 \Longrightarrow дополнительный код.

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

Пример. Выполним вычитание напрямую и через сложение (через дополнительный код ):


Целые числа в математике и их аналоги в n-разрядных арифметиках тождественны (по количеству) в рамках их представления с этой разрядностью. При этом можно отметить основные отличия представления чисел в поле памяти человека и в поле памяти n-разрядной арифметики:

  1. бесконечное и счетное множество целых чисел представляется отрезком [–N; +N], где N – максимальное число, представимое в этой арифметике (многоточие – общее число единиц, равное n ): N = (111 . . . 1)2 ;
  2. бесконечное и несчетное множество действительных чисел \left(-\infty;+\infty\right), располагающееся на числовой оси равномерно и плотно, представляется в n-разрядной арифметике множеством с неравномерной плотностью (сгущение у нуля и сжатость со стороны меньших чисел);
  3. нуль во множестве действительных чисел в любой своей окрестности имеет множество чисел, а нуль в n-разрядной арифметике представлен изолированно.

С точки зрения обычной арифметики, например, в интервале (–1; 1) имеется бесконечное множество "плотно" расположенных точек, причем в любой окрестности каждой такой точки имеется хотя бы одна точка из этого множества. Такую арифметику называют часто регулярной арифметикой. Машинная же арифметика имеет следующие особенности. Она нерегулярна – точки интервала сгущаются около нуля; кроме того, в этом интервале точка х "изолирована" – если взять любую ее окрестность (х – а; х + а), где а – число, которое не превосходит машинного нуля (наименьшего представимого в машине числа), то в этом интервале нет других точек (отличных от х ). Говоря языком теории вероятности, плотности распределения чисел в регулярной и нерегулярной арифметике – различны, как, впрочем, плотности распределения целых и вещественных чисел в одной и той же арифметике. Множество вещественных чисел в машинной арифметике представляется как подмножество (определяемое разрядностью арифметики) множества рациональных чисел. Есть и другие особенности этих множеств (связанные, например, с выполнением операций), но указанные выше особенности – основные.

Различия в представлении чисел в обычной и в машинной (n-разрядной) арифметике ограничивают как "математические" возможности компьютера, так и "компьютерные" возможности математики, использование математических методов, алгоритмов в компьютерах.

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

Так как диапазон n-разрядных чисел системы счисления с основанием p находится в пределах |(x)_{p}|\le p^{n}-1, то для представления дробных чисел этот диапазон еще снижается, поскольку часть разрядов необходимо отвести под изображение мантиссы. Таким образом, имеются так называемые "зоны нечувствительности" форм представления чисел в n-разрядных арифметиках.

В 1937 году Конрадом Цузе для увеличения диапазона чисел, представимых в арифметике двоичных чисел, а также для повышения точности этого представления чисел было предложено представление чисел в плавающей, нормализованной форме – число x представляется в виде: x=m\times p^k, где mмантисса числа, kцелый порядок числа, p^{-1}\le|m|<1.

Пусть даны два числа: x=m\times p^k и y=n\times p^l ( k>l ). Тогда можно проверить, что результаты выполнения операций будут равны:

x + y = (m + n \times p^{l–k}) \times p^k,\\X x  y = (m – n \times p^{l–k})\times p^k,\\x \times y=(m \times n) \times p^{k+l},\\x/y = (m/n) \times p^{k–l}.

Если из n разрядов, отводимых под изображение чисел, m двоичных разрядов отвести под мантиссу, k – под порядок, один разряд – под знак числа и один разряд – под знак порядка (например, 0 – плюс, 1 – минус), то диапазон представимых в форме с плавающей запятой чисел резко увеличивается ( m + k + 2 = n ):

–(0.111\ldots1)_2 \times (10)_{2}^{+(111\ldots1)_2} \le  x \le +(0.111\ldots1)_2 \times (10)_2^{+(111\ldots1)_2}

(многоточие соответствует k единицам).

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

Такое представление очень удобно для хранения в ЭВМ, так как на самом деле необходимо хранить не само число, а его знак, мантиссу, порядок и знак порядка, и все операции с числами сводятся к операциям с этими объектами. Операции же с этими объектами просты: сравнение знаков, увеличение, уменьшение порядка, сложение мантисс, нормализация, то есть в конечном итоге сводятся к достаточно просто реализуемым операциям сдвига, выравнивания, сравнения разрядов.

Пример. Вычислить наибольшее и наименьшее 5-разрядное целое число в системе счисления с основанием 3. Наибольшее целое n-разрядное число, которое возможно записать в системе счисления с основанием р, равно:

x_p^{\max}=\sum_{i=0}^{n-1} (p-1)p^i = \sum_{i=0}^{n-1}p^{i+1}-\sum_{i=0}^{n-1}p^i = p^n - 1

Наименьшее целое n-разрядное число в этой системе равно

x_{min} = –x^{max} = 1 – р^n.

Таким образом, в системе счисления с основанием 3 и числом разрядов 5 представим диапазон следующих чисел:

–242 = 1 – 3^5 \le (x)_4 \le 3^5 – 1 = 242.

Формулам можно придать более компактный вид. Например, для двоичной системы

a=\underbrace{111\ldots1}_{n}=2^{n}-1, b=1-2^n

а в восьмеричной системе счисления эти числа

a=\underbrace{777\ldots7}_{n}=8^{n}-1, b=1-8^n.

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

  1. если число достаточно мало, например, а = 0.12Е + 00, то оно может быть представлено любым числом из наименьшего интервала включающего а, в частности числом 0.120000001 или 0.199999999 и в этом случае сравнивать на равенство "в лоб" нельзя (вещественные числа в форме с плавающей запятой опасно сравнивать на совпадение);
  2. порядок выполнения операций может влиять на результат, например, в 4-разрядной арифметике с фиксированной запятой 20.0000 + 0.0001 = 20.0001, но при этом 0.2000Е + 02 + 0.1000Е – 05 = 0.2000Е + 02 ;
  3. может возникнуть так называемая ситуация "переполнения порядка" при сложении (умножении) очень больших чисел или "исчезновения порядка" при сложении (умножении) "очень малых чисел", в частности, 0.6000Е + 39 x0.1200Е + 64 = 0.9999Е + 99 (или же не определено), а также 0.6000Е – 35 x 0.0200Е – 65 = 0.9999Е – 99 (или же не определено), при соответствующим образом определенной разрядности десятичной арифметики;
  4. при сложении чисел с плавающей запятой (а, в конечном счете, все операции выполняются через сложение) происходит выравнивание порядков для последующего сложения мантисс, а при выравнивании степеней может происходить потеря (усечение) младших разрядов, например, такая ситуация может возникнуть при сложении одного "очень большого числа" с одним "очень малым числом"

Есть много различных способов (часто искусственных) формирования систем чисел.

Пример. В факториальной системе счисления целые числа записывают линейной комбинацией факториалов, например, 2457 = 2 \times 3! + 4 \times 2! + 5 \times 1! + 7 \times 0! (0! = 1, n! = 1 \times 2 \times 3 \times \ldots \times n). Эта система (условно) позиционна. Так как 0! = 1! = 1, то два младших разряда n-разрядного числа x = x_{n}x_{n—1}\ldots x_{2}x_{1} (n > 1) в разложении этого числа по факториалам представимы как x_2 \times 1! + x_1 \times 0! = x_1 \times 1! + x_2 \times 0! и поэтому веса этих разрядов не зависят от позиции (поэтому при n > 1 это число можно считать непозиционным лишь условно). Формула перевода из факториальной системы счисления в десятичную систему:

x = x_{n}x_{n-1}\ldots x_1 = x_n \times (n – 1)! + x_{n–1} \times (n – 2)! + ... + x_1 \times 0!

История развития систем счисления достаточно интересна. Приведем лишь некоторые факты. Счет вначале велся с помощью пальцев рук (пятерками и затем – десятками). В некоторых странах сохранился счет с основанием 12 (например, Великобритания – 12 шиллингов) и 20 (например, Франция – "quatre–vingts" или "четыре-двадцать" то есть 80; у древних адыгов счет велся аналогично: "тощIищ", то есть "двадцать-три" – 60) и др. 

< Лекция 3 || Лекция 4: 12 || Лекция 5 >
Ирина Рыбакова
Ирина Рыбакова

Здравствуйте,ясдавала 15 тестов и экзамен. Мне нужно сейчас посмотреть результаты тестов.Как это сдлеать?

Анастасия Тимофеева
Анастасия Тимофеева