Сложение положительных целых чисел
Лекция. Представление чисел в компьютерах. Двоичная арифметика. Точность вычислений. Память компьютеров и адреса.
Представление чисел в компьютерах
Числа, арифметические операции и символы
Представление чисел
Сложение положительных чисел
Сложение и вычитание чисел со знаком
Переполнение в целочисленной арифметике
Символы
Обработка чисел с плавающей запятой
Стандарт IEEE для чисел с плавающей запятой
Арифметические операции над числами с плавающей запятой
Точность вычислений. Разряды защиты и усечение
Память и адреса
Операции доступа к памяти. Коды ASCII символов
Пример доступа к памяти персонального компьютера
Все компьютеры работают с числами. У них имеются команды для осуществления базовых арифметических операций с данными. Кроме того, при выполнении машинных команд программы выполняется ряд арифметических операций, генерирующих числовые адреса для доступа к хранящимся в памяти операндам. Для того чтобы понять, как решаются эти задачи, студент должен знать, как числа представлены в компьютере и каким образом они складываются и вычитаются. Этому вопросу посвящена данная лекция. Подробное описание логических схем, реализующих компьютерную арифметику, можно узнать в литературе [2] по этому курсу.
Компьютеры работают не только с числовыми данными, но и с символами и даже со строками символов, то есть наряду с числовой информацией оперируют и текстовой. Поэтому наряду с числами и операциями над ними будет рассмотрено машинное представление символов.
|
|
Числа, арифметические операции и символы
Компьютеры состоят из логических схем, которые обрабатывают информацию в виде электрических сигналов, принимающих два значения. Мы обозначаем их цифрами 0 и 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. Двоичное представление целых чисел со знаком
Сложение положительных целых чисел
Рассмотрим принцип сложения двух одноразрядных чисел. Результат выполнения этой операции приведен на рис. 4.2. Обратите внимание, что для записи результата сложения двух единиц необходим 2-битовый вектор 10, представляющий значение 2. В этом случае говорят, что сумма равняется 0, а перенос — 1. Для сложения многоразрядных чисел используется метод, аналогичный тому, с помощью которого мы складываем десятичные числа на бумаге. Складываются пары разрядов, начиная с младшего разряда, то есть с правого края битового вектора, с переносом в направлении старшего разряда, то есть левого края битового вектора.
0 1 0 1
+0 +0 +1 +1
0 1 1 10
↑
Перенос
Рис. 4.2. Сложение одноразрядных чисел
Дата добавления: 2018-02-18; просмотров: 1203; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!