- •4. Лекция. Представление чисел в компьютерах. Двоичная арифметика. Точность вычислений. Память компьютеров и адреса.
- •4.1. Числа, арифметические операции и символы
- •4.1.1. Представление целых чисел
- •4.1.2. Сложение положительных целых чисел
- •4.1.3. Сложение и вычитание целых чисел со знаком
- •4.1.4. Переполнение в целочисленной арифметике
- •4.2. Символы
- •4.3. Обработка чисел с плавающей запятой
- •4.3.1. Стандарт ieee для чисел с плавающей запятой
- •4.3.2. Арифметические операции над числами с плавающей запятой
- •4.3.3. Точность вычислений. Разряды защиты и усечение
- •4.4. Память и адреса
- •4.5. Операции доступа к памяти. Коды ascii символов.
4. Лекция. Представление чисел в компьютерах. Двоичная арифметика. Точность вычислений. Память компьютеров и адреса.
Представление чисел в компьютерах
Числа, арифметические операции и символы
Представление чисел
Сложение положительных чисел
Сложение и вычитание чисел со знаком
Переполнение в целочисленной арифметике
Символы
Обработка чисел с плавающей запятой
Стандарт IEEE для чисел с плавающей запятой
Арифметические операции над числами с плавающей запятой
Точность вычислений. Разряды защиты и усечение
Память и адреса
Операции доступа к памяти. Коды ASCII символов
Пример доступа к памяти персонального компьютера
Все компьютеры работают с числами. У них имеются команды для осуществления базовых арифметических операций с данными. Кроме того, при выполнении машинных команд программы выполняется ряд арифметических операций, генерирующих числовые адреса для доступа к хранящимся в памяти операндам. Для того чтобы понять, как решаются эти задачи, студент должен знать, как числа представлены в компьютере и каким образом они складываются и вычитаются. Этому вопросу посвящена данная лекция. Подробное описание логических схем, реализующих компьютерную арифметику, можно узнать в литературе [2] по этому курсу.
Компьютеры работают не только с числовыми данными, но и с символами и даже со строками символов, то есть наряду с числовой информацией оперируют и текстовой. Поэтому наряду с числами и операциями над ними будет рассмотрено машинное представление символов.
4.1. Числа, арифметические операции и символы
Компьютеры состоят из логических схем, которые обрабатывают информацию в виде электрических сигналов, принимающих два значения. Мы обозначаем их цифрами 0 и 1. Количество информации, представленной таким сигналом, измеряется в битах. Наиболее естественный способ представления числа в компьютерной системе заключается в использовании строки битов, называемой двоичным числом. Символ текста тоже может быть представлен строкой битов, называемой кодом символа.
Для начала мы опишем представление чисел и арифметические операции над ними в двоичной системе счисления, а затем поговорим о представлении символов.
4.1.1. Представление целых чисел
Рассмотрим n-разрядный вектор
В = bn-1 … b1b0
Здесь bi = 0 или 1 при 0 ≤ i ≤ n-1. Этот вектор может представлять беззнаковое целочисленное значение V в диапазоне от 0 до 2n-1, где
V(B) = bn-1 x 2n-1 + ...+b1 x 21 + b0 x 20
Совершенно очевидно, что нам необходимо как-то представлять и положительные, и отрицательные числа. Существуют три системы представления чисел со знаком:
- значение со знаком;
- дополнение до единицы;
- дополнение до двух.
Во всех трех системах крайний слева бит, называемый самым старшим разрядом (Most Significant Bit, MSB), равен 0 в случае положительных чисел и 1 — в случае отрицательных. На рис. 4.1 все три представления показаны на примере 4-разрядных (4-битовых) чисел. Положительные значения во всех трех системах представляются одинаково, а отрицательные — по-разному. В системе значения со знаком отрицательные числа отличаются от соответствующих положительных чисел тем, что значение самого старшего бита (bз на рисунке 4.1) в векторе В равняется не 0, а 1. Например, число +5 представляется как 0101, а число -5 как 1101. Такое представление чисел называют еще прямым кодом числа со знаком. В представлении дополнения до единицы отрицательные значения получают путем дополнения каждого разряда соответствующего положительного значения до единицы. Таким образом, представление числа -3 формируется путем дополнения каждого бита вектора 0011, так что в результате получается 1100. Такое представление чисел еще называют обратным кодом числа. Очевидно, что эту же операцию необходимо выполнить для преобразования отрицательного числа в соответствующее положительное значение. И в одном и в другом случае преобразование называется дополнением числа до единицы. Операция формирования дополнения заданного числа до единицы эквивалентна вычитанию этого числа из 2n-1, то есть из 1111 в случае 4-разрядных чисел (см. рис. 4.1). В системе дополнения до двух операция дополнения производится путем вычитания числа из 2n. То же самое значение можно получить и путем добавления 1 к дополнению этого числа до единицы. Такое представление числа еще называют дополнительным кодом числа.
Обратите внимание, что в системах значения со знаком и дополнения до единицы числа +0 и -0 представляются по-разному, а в системе дополнения до двух — одинаково. Имея всего четыре разряда, значение -8 можно представить в системе дополнения до двух, но нельзя представить ни в одной из двух других систем. Для нас наиболее естественной представляется система значения со знаком, поскольку мы привыкли иметь дело с десятичными значениями со знаком. Систему дополнения до единицы относительно легко связать с системой значения со знаком, а вот система дополнения до двух кажется несколько неестественной. Но, как будет показано дальше, именно она оказалась наиболее эффективным способом представления чисел с точки зрения выполнения операций сложения и вычитания. Поэтому она чаще всего используется и в компьютерах.
Двоичное значение b3b2b1b0
|
Представление числа в системе
| ||
значения со знаком
|
дополнения до единицы
|
дополнения до двух
| |
0111
|
+7
|
+7
|
+7
|
0110
|
+6
|
+6
|
+6
|
0101
|
+5
|
+5
|
+5
|
0100
|
+4
|
+4
|
+4
|
0011
|
+3
|
+3
|
+3
|
0010
|
+2
|
+2
|
+2
|
0001
|
+1
|
+1
|
+1
|
0000
|
+0
|
+0
|
+0
|
1000
|
-0
|
-7
|
-8
|
1001
|
-1
|
-6
|
-7
|
1010
|
-2
|
-5
|
-6
|
1011
|
-3
|
-4
|
-5
|
1100
|
-4
|
-3
|
-4
|
1101
|
-5
|
-2
|
-3
|
1110
|
-6
|
-1
|
-2
|
1111
|
-7
|
-0
|
-1
|
Рис. 4.1. Двоичное представление целых чисел со знаком