понедельник, 22 сентября 2014 г.

Машинное представление целых чисел в памяти компьютера. 16.09.2014

 Представление чисел в компьютере. Целые числа и их компьютерный код

                                            Целые числа в компьютере



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




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


Беззнаковое  представление 


 Если двоичное число состоит не более чем из k цифр, то это число можно записать в k-разрядной ячейке памяти, дополнив нулями слева до k разрядов.
Очевидно, что самое большое целое положительное число, которое мы можем записать в k разрядах, состоит из единиц во всех разрядах ячейки. Если перевести это число в десятичную систему счисления, то оно равно 2k – 1. Минимальное число состоит из нулей во всех разрядах и равно 0.


Знаковое представление

При знаковом представлении чисел 0 в самом левом разряде ячейки соответствует знаку плюс, а единица – знаку минус.

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


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

1) сравнить знаки чисел;
2) сравнить числа по модулю при неравенстве их знаков;
3) выполнить нужную арифметическую операцию (сложение при равенстве знаков или вычитание из большего по модулю числа меньшего при неравенстве их знаков);
4) присвоить алгебраической сумме (разности) знак большего по модулю числа.

+
0 0 0 0 0 1 0 1
1 1 1 1 1 1 0 0
1
0 0 0 0 0 0 0 1

Алгоритм построения дополнительного кода

  1. Модуль числа представляется прямым кодом в k разрядах.
  2. В прямом коде все нули заменяются на единицы, а единицы – на нули. Таким образом получаем обратный код.
  3. К полученному обратному коду прибавляется единица.



Алгоритм получения числа по дополнительному коду

Иногда требуется по имеющемуся дополнительному коду числа восстановить исходное число. Модуль искомого числа в таком случае можно получить двумя способами:

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



 Перечисление целых знаковых чисел

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

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

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

Но что произойдет, если мы прибавим единицу к числу 127? Выполним операцию прибавления 1 к числу 127.
127 = 111111112
127 + 1 = 128 = 100000002


Аналогичным образом при вычитании единицы из –128 в 8-разрядной ячейке мы получим максимально возможное положительное число, т.е. 127.




Комментариев нет:

Отправить комментарий