Дополнение б – представление чисел

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

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

Таким образом, в двоичной системе счисления, используя прямой код, в восьмиразрядной ячейке (байте) можно записать семиразрядное число. Например:

0 0001101 – положительное число
1 0001101 – отрицательное число

Количество значений, которые можно поместить в семиразрядной ячейке со знаком в дополнительном разряде равно 256. Это совпадает с количеством значений, которые можно поместить в восьмиразрядную ячейку без указания знака. Однако диапазон значений уже другой, ему принадлежат значения от -128 до 127 включительно (при переводе в десятичную систему счисления).

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

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

Дополнительный код

В дополнительном коде, также как и прямом, первый разряд отводится для представления знака числа. Прямой код используется для представления положительных чисел, а дополнительный – для представления отрицательных. Поэтому, если в первом разряде находится 1, то мы имеем дело с дополнительным кодом и с отрицательным числом.

Все остальные разряды числа в дополнительном коде сначала инвертируются, т.е. заменяются противоположными (0 на 1, а 1 на 0). Например, если 1 0001100 – это прямой код числа, то при формировании его дополнительного кода, сначала надо заменить нули на единицы, а единицы на нули, кроме первого разряда. Получаем 1 1110011. Но это еще не окончательный вид дополнительного кода числа.

Далее следует прибавить единицу к получившемуся инверсией числу:

1 1110011 + 1 = 1 1110100

В итоге и получается число, которое принято называть дополнительным кодом числа.

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

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

Это можно увидеть на примерах ниже.

Операция сложения положительного числа и отрицательного числа, представленного в прямом коде

  1. Прямой код числа 5: 0 000 0101
    Прямой код числа -7: 1 000 0111
  2. Два исходных числа сравниваются. В разряд знака результата записывается знак большего исходного числа.

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

    _ 000 0111 000 0101
    ————- 000 0010

  4. После выполнения операции учитывается первый разряд. Результат операции 1 000 0010, или -210.

Операция сложения положительного числа и отрицательного числа, представленного в дополнительном коде

  1. Прямой код числа 5: 0 000 0101
    Прямой код числа -7: 1 000 0111
  2. Формирование дополнительного кода числа -7. Прямой код : 1 000 0111 Инверсия : 1 111 1000

    Добавление единицы: 1 111 1001

  3. Операция сложения. 0 000 0101
    + 1 111 1001 ————– 1 111 1110
  4. Проверка результата путем преобразования к прямому коду. Дополнительный код: 1 111 1110 Вычитание единицы : 1 111 1101

    Инверсия : 1 000 0010 (или -210)

Источник: https://inf1.info/additionalcode

Дополнительный код (дополнение до двух)

Чаще всего для представления отрицательных чисел используется код с дополнением до двух (англ. two's complement). Он же называется обратный дополнительный код.

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

если число положительное, то в старший разряд записывается ноль, далее записывается само число;

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

Рис. 4. Нумерация двоичных чисел в представлении c дополнением до двух.

В качестве примера переведём число −5 в дополнительный восьмибитовый код. Прямой код модуля −5 — 0000101, обратный — 1111010, прибавляем 1, получаем 1111011, приписываем 1 в качестве знакового разряда, в результате получаем 11111011.

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

Для получения из дополнительного кода самого числа нужно инвертировать все разряды кода и прибавить к нему единицу. Можно проверить правильность, сложив дополнительный код с самим числом: результат должен быть равен. Переведём 11111011 обратно. Инвертируем — 00000100, прибавляем 1, получаем 00000101 — модуль исходного числа −5. Проверим: 11111011 + 00000101 = 100000000.

Можно получить диапазон значений.

Достоинства метода:

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

· нет проблемы двух нулей.

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

Арифметические действия над целыми числами

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

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

Сложение и вычитание

Сложение и вычитание чисел без знака происходит по обычным для позиционных систем счисления алгоритмам.

Примеры (для k =3):

0012+1002= 1012;

1012-0102=0112.

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

Источник: https://cyberpedia.su/6×6517.html

Представление чисел в формате с фиксированной запятой Изучаемые вопросы: Представление целых чисел в памяти компьютера. Представление отрицательных чисел. – презентация

1 Представление чисел в формате с фиксированной запятой Изучаемые вопросы: Представление целых чисел в памяти компьютера. Представление отрицательных чисел в памяти компьютера. Размер ячейки и диапазон значений чисел. Особенности работы компьютера с целыми числами. 23 ноября

2 ПРЕДСТАВЛЕНИЕ ЦЕЛЫХ ЧИСЕЛ В ФОРМАТЕ С ФИКСИРОВАННОЙ ЗАПЯТОЙ Целые числа в компьютере хранятся в памяти в формате с фиксированной запятой. При хранении чисел в памяти в формате с фиксированной запятой каждому разряду ячейки памяти соответствует всегда один и тот же разряд числа, а запятая находится справа после младшего разряда, т.е. вне разрядной сетки. Достоинства: простота и наглядность представления чисел; простота алгоритмов реализации арифметических операций (вычитание заменяется сложением). Недостаток: конечный диапазон представления величин, недостаточный для решения задач, в которых используются очень малые и/или очень большие числа =1010 2

3 ЦЕЛЫЕ НЕОТРИЦАТЕЛЬНЫЕ ЧИСЛА Для хранения целых неотрицательных чисел отводится одна ячейка памяти (8 битов). Минимальное число: Максимальное число: Для n-разрядного представления максимальное целое неотрицательное число равно 2 n – 1. Минимальное число равно 0. Максимальное число равно = = 2 8 – 1 = Диапазон изменения целых неотрицательных чисел от 0 до

4 ЦЕЛЫЕ ЧИСЛА СО ЗНАКОМ Представление в компьютере положительных чисел с использованием формата «знак-величина» называется прямым кодом числа. Старший (левый) разряд отводится под знак числа: 0 – положительное число, 1 – отрицательное число. Для хранения целых чисел со знаком отводится две ячейки памяти (16 битов). Для хранения больших целых чисел со знаком отводится четыре ячейки памяти (32 бита)

5 ЦЕЛЫЕ ЧИСЛА СО ЗНАКОМ Для n-разрядного представления со знаком (с учетом выделения одного разряда на знак): максимальное положительное число равно 2 n-1 – 1, минимальное отрицательное число равно – 2 n-1 Диапазон хранения целых чисел со знаком от – до Диапазон хранения больших целых чисел со знаком от – до А 10 = 2 15 – 1 = А 10 = – 2 15 = – А 10 = 2 31 – 1 = А 10 = – 2 31 = –

6 ЦЕЛЫЕ ЧИСЛА СО ЗНАКОМ 3 +(-3) =

7 ДОПОЛНИТЕЛЬНЫЙ КОД Для представления отрицательных чисел используется дополнительный код, позволяющий заменить арифметическую операцию вычитания операцией сложения. Дополнительный код представляет собой дополнение модуля числа А до 0. Дополнительный код отрицательного числа А, хранящегося в n ячейках, равен 2 n – |А|. Это равенство тождественно справедливо, так как в компьютерной n-разрядной арифметике 2 n 0. Действительно, двоичная запись числа 2 n состоит из одной единицы и n нулей, а в n-разрядную ячейку может уместиться только n младших разрядов, т.е. n нулей. 2 8 = n – |А| + |А| = 0

8 ДОПОЛНИТЕЛЬНЫЙ КОД Найдём дополнительный код отрицательного числа – при n=16: 2n2n 2 16 = |А||А| = n – |А| | |= n – |А| |А||А| 1 2 n – |А| + |А| = 0 2 n – |А|

9 АЛГОРИТМ ПОЛУЧЕНИЯ ДОПОЛНИТЕЛЬНОГО КОДА Алгоритм получения дополнительного кода отрицательного числа: 1.Модуль числа записать прямым кодом в n двоичных разрядах. 2.Получить обратный код числа, для этого значения всех битов инвертировать. 3.К полученному обратному коду прибавить единицу. Прямой код | | Обратный кодИнвертирование Прибавление единицы Дополнительный код Найдём дополнительный код отрицательного числа – при n=16: +

10 ВЫПОЛНЕНИЕ АРИФМЕТИЧЕСКОГО ДЕЙСТВИЯ Выполнить арифметическое действие – в 16-разрядном компьютерном представлении Десятичное число Прямой кодОбратный кодДополнительный код – Дополнительный код

11 ПЕРЕВОД ДОПОЛНИТЕЛЬНОГО КОДА В ДЕСЯТИЧНОЕ ЧИСЛО В 16-разрядном компьютерном представлении – Переведем полученный дополнительный код в десятичное число: 1. Инвертируем дополнительный код: К полученному коду прибавим 1 (получим модуль отрицательного числа): Переведем в десятичное число и припишем знак отрицательного числа: -10

12 ПЕРЕВОД ДОПОЛНИТЕЛЬНОГО КОДА В ДЕСЯТИЧНОЕ ЧИСЛО В 16-разрядном компьютерном представлении – Переведем полученный дополнительный код в десятичное число: 1. Отнимем 1 от дополнительного кода: Инвертируем полученное число: Переведем в десятичное число и припишем знак отрицательного числа: -10 Почему не применяется данный метод перевода дополнительного кода в десятичное число?

13 ПРАКТИКУМ Задача. Найти минимальное отрицательное число в 8-разрядном компьютерном представлении Переведем дополнительный код в десятичное число: 1.Инвертируем дополнительный код: К полученному коду прибавим 1 (получим модуль отрицательного числа): Переведем в десятичное число и припишем знак отрицательного числа: -128 Для n-разрядного представления со знаком минимальное отрицательное число равно –2 n-1

14 ПРАКТИКУМ Задача. Найти максимальное отрицательное число в 8-разрядном компьютерном представлении Переведем дополнительный код в десятичное число: 1.Инвертируем дополнительный код: К полученному коду прибавим 1 (получим модуль отрицательного числа): Переведем в десятичное число и припишем знак отрицательного числа: -1

15 Выполняя на компьютере вычисления с целыми числами, нужно помнить об ограниченности диапазона допустимых значений. Выход результата за границы допустимого диапазона называется переполнением. Переполнение при вычислениях с целыми числами не вызывает прерывания работы процессора, но результаты могут оказаться неправильными. ОСОБЕННОСТИ РАБОТЫ С ЦЕЛЫМИ ЧИСЛАМИ

16 ПРАКТИКУМ Задача. Компьютер работает только с целыми числами, представленными в однобайтовой ячейке памяти. Какое значение будет получено в результате вычисления значения арифметического выражения ? Переведем в десятичное число и припишем знак отрицательного числа: Решение: Внутреннее представление числа 100: Внутреннее представление числа 39: Внутреннее представление суммы : Знаковый разряд равен 1, значит число отрицательное. Инвертируем код: Прибавим 1: Переполнение привело к неправильному результату!

17 ПРАКТИКУМ 1. Записать внутреннее представление следующих десятичных чисел, используя 8-разрядную ячейку:а) 64 б) -120 в) -96 г) 57 используя 16-разрядную ячейку:а) б) 6524 в) Определите, каким десятичным числам соответствуют следующие двоичные коды 8-разрядного представления целых чисел: а) б) в) г)

18 ЗАДАНИЕ НА ДОМ Учить: § (с ) Выполнить: 2.14 (с.147) и 2.15 (с.148)

Источник: http://www.myshared.ru/slide/656817

Организация однопроцессорных ЭВМ 2 > общие вопросы истории развития и построения ЭВМ 2

Сохрани ссылку в одной из сетей:

В ЭВМ в целях упрощения выполнения арифметических операций применяют специальные коды для представления чисел. При помощи этих кодов упрощается определение знака результата операции.

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

В результате упрощаются устройства ЭВМ, выполняющие арифметические операции.

Для представления чисел со знаком в ЭВМ применяют прямой, обратный и дополнительный коды.

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

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

2.6.1. Прямой код

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

Рассмотрим однобайтовое представление двоичного числа. Пусть это будет 28(10). В двоичном формате – 0011100(2) (при однобайтовом формате под величину числа отведено 7 разрядов). Двоичное число со знаком будет выглядеть так, как показано на рис. 2.1.

Рис. 2.1. Формат двоичного числа со знаком в прямом коде

а – положительное число; б – отрицательное

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

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

2.6.2. Обратный код

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

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

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

На рис. 2.2 приведен формат однобайтового двоичного числа в обратном коде.

Рис. 2.2. Формат двоичного числа со знаком в обратном коде

а – положительное число; б – отрицательное

В общем случае ОК является дополнением модуля исходного числа до наибольшего числа без знака, помещенного в разрядную сетку.

Алгоритм формирования ОК очень прост, при этом ОК позволяет уни­фи­цировать операции сложения и вычитания в АЛУ, которые в прямом ко­де выполняются по-разному. Однако работа с ОК вызывает ряд труд­нос­тей.

В частности, возникают два нуля: +0 и -0, т.е. в прямом коде (в котором пред­­ставлены положительные числа) имеет место (+0) = 000…0, а в обрат­ном коде (в котором представлены отрицательные числа): (-0) = 111…

1.

Кроме того, в операциях сложения и вычитания требуется дополни­тельная операция по прибавлению бита переноса в младший разряд суммы. Рассмотрим правила алгебраического сложения в ОК (поскольку А-В=А+(-В)). Алгоритм сложения в ОК включает в себя:

  • сложение кодов, включая знаковый разряд;
  • прибавление переноса к МЗР (младшему значащему разряду) суммы.

Пример:

Вычислить выражение -3(10) -2(10).

Пример:

Вычислить 7(10) -3(10).

Указанные трудности привели к тому, что в современных ЭВМ абсолютное большинство операций выполняется в дополнительном коде.

2.6.3. Дополнительный код

Дополнительный код (ДК) строится следующим образом. Сначала формируется обратный код (ОК), а затем к младшему разряду (МЗР) добавляют 1.

При выполнении арифметических операций положительные числа представляются в прямом коде (ПК), а отрицательные числа – в ДК, причем обратный перевод ДК в ПК осуществляется аналогичными операциями в той же последовательности.

На рис. 2.3 рассмотрена цепь преобразований числа из ПК в ДК и обратно в двух вариантах.

Рис. 2.3. Два варианта преобразования чисел из ПК в ДК и обратно

Пример:

Число -5(10) перевести в ДК и обратно (первый вариант).

Пример:

Число -5(10) перевести в ДК и обратно (второй вариант).

Использование ДК для представления отрицательных чисел устраняет двусмысленное представление нулевого результата (возникновение двух нулей: +0 и -0), так как -0 исчезает.

В общем случае использованием ДК для записи отрицательных чисел можно перекрыть диапазон десятичных чисел от –2k-1 до +2k-1-1, где k – число используемых двоичных разрядов, включая знаковый.

Так, с помощью одного байта можно представить десятичные числа от -128 до +127, либо только положительные числа от 0 до 255 (здесь под положительными числами понимаются числа без знака). В табл.1 приведены 4-разрядные двоичные числа от 0000 до 1111 и десятичные числа в случае представления их со знаком и без знака.

Из этой таблицы следует, что в формате 4-разрядного двоичного числа могут быть представлены десятичные числа со знаком в диапазоне от -8 до +7 или десятичные числа без знака в диапазоне от 0 до +15.

Оба этих способа представления чисел (со знаком и без знака) широко используются в ЭВМ.

Таблица 1

Представление десятичных чисел одним полубайтом

4-х разрядноедвоичное число десятичные эквиваленты двоичного числа со знаком десятичные эквиваленты двоичного числа без знака
0000 +0
0001 +1 1
. . . . ПК . . . . . .
0110 +6 6
0111 +7 7
1000 -8 8
1001 -7 9
1010 -6 10
. . . . ДК . . . . . .
1110 -2 14
1111 -1 15

В ЭВМ используется быстрый способ формирования ДК. Его суть заключается в следующем. Двоичное число в ПК просматривается от МЗР к СЗР. Пока встречаются нули, их копируют в одноименные разряды результата. Первая встретившаяся единица также копируется в соответствующий разряд, а каждый последующий бит исходного числа заменяется на противоположный (0 – на 1, 1 – на 0).

Пример:

Число –44(10) (10101100 (2)) перевести в ДК и обратно.

Проверка:

Пример:

Перевести в ДК модуль числа -44.

Как видно из примеров, результаты, полученные при преобразовании обоими методами, совпадают.

2.6.4. Сложение и вычитание в дополнительном коде

При выполнении арифметических операций в современных ЭВМ используется представление положительных чисел в прямом коде (ПК), а отрицательных – в обратном (ОК) или в дополнительном (ДК) кодах. Это можно проиллюстрировать схемой на рис. 2.4.

Рис. 2.4. Представление чисел в ЭВМ:

а) – положительное число; б) – отрицательное число

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

При возникновении переноса из разряда знака единица переноса прибавляется к МЗР суммы кодов при использовании ОК и отбрасывается при использовании ДК.

В результате получается алгебраическая сумма в обратном (или дополнительном) коде.

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

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

  • знаковый разряд равен нулю: результат – положительное число в ПК;
  • знаковый разряд равен единице: результат – отрицательное число в ДК.

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

Пример:

Вычислить алгебраическую сумму 58 – 23.

Пример:

Вычислить алгебраическую сумму 26 – 34.

Пример:

Вычислить алгебраическую сумму -5 – 1.

2.6.5. Признак переполнения разрядной сетки

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

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

При положительном переполнении результат операции положительный, а при отрицательном переполнении – отрица­тель­ный.

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

Рассмотрим простейшие примеры с трехбитовыми словами. Диапазон чисел, которые они представляют, равен от -4 до +3. В рассматриваемых словах 1 бит знака и 2 информационных бита.

1. Алгебраическое суммирование без переноса.

Так как перенос в знаковый разряд или из знакового разряда суммы отсутствует, то переполнения нет.

Результат – положительное число в ПК, равное 3.

2. Алгебраическое суммирование с двумя переносами.

Имеются переносы в знаковый разряд и из знакового разряда вычисляемой суммы, поэтому переполнения нет.

Результат – отрицательное число в ДК, равное – 4.

3. Алгебраическое суммирование с одним переносом.

(Положительное переполнение).

При суммировании есть перенос в знаковый разряд суммы, а перенос из знакового разряда отсутствует. Т.е. имеет место положительное переполнение и результат операции положительный.

Число 4 нельзя представить в прямом коде. Формальный результат равен -4.

4. Алгебраическое суммирование с одним переносом.

(Отрицательное переполнение).

Число -5 нельзя представить 3-битовой комбинацией. Формальный результат равен +3.

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

2.6.6. Деление в дополнительном коде

Деление в дополнительном коде осуществляется по тем же правилам, что были описаны в пункте 5.4. раздела “Двоичная арифметика”. Но обычный метод деления “столбиком” для ЭВМ не пригоден. Для ЭВМ используются более громоздкие методы деления, которые здесь не рассматриваются. Информацию о них можно найти в литературе, приведенной в конце главы.

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

Перевод чисел из дополнительного кода в десятичную систему можно проводить по схеме, приведенной на рис. 2.5.

Рис. 2.5. Схема перевода из ДК в десятичную систему

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

Рассмотрим машинное слово произвольной длины (рис. 2.6). При прямом способе перевода десятичное число со знаком формируется как сумма разрядов со своими весами и знаками (старший N-й разряд имеет отрицательный вес).

Рис. 2.6. Машинное слово длиной N

Проиллюстрируем перевод чисел из ДК в десятичную систему счисления примерами.

Пример:

Перевести число 1110 из ДК в десятичную систему.

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

Пример:

Перевести число 101100 из ДК в десятичную систему.

101100(2) (ДК) = -25+23+22 = -32+8+4 = -20(10)

Проверим:

2.6.8. Модифицированные коды

Эти коды отличаются от прямого, обратного и дополнитель­ного кодов тем, что на изображение знака отводится два разряда: если чис­ло положительное – 00, если число отрицательное – 11.

Такие коды оказа­лись удобны (с точки зрения построения АЛУ) для выявления переполнения раз­ряд­ной сетки.

Если знаковые разряды результата прини­ма­ют значение 00 и 11, то переполнения разрядной сетки не было, а если 01 или 10 – то было пере­пол­не­ние. Вернемся к примерам в п.п. 2.6.5.

Следует иметь ввиду, что в предыдущих разделах рассмотрены только основные принципы выполнения арифметических операций, из кото­рых видно, что все арифметические операции с двоичны­ми числами могут быть сведены к двум операциям – операциям суммирова­ния двоичных чисел в прямом или дополнительном кодах, а также опера­циям сдвига двоичного числа вправо или влево. Реальные алгоритмы вы­полнения операций умножения и деления в современных ЭВМ достаточно громоздки и здесь не рассматриваются.

2.6.9. Арифметика повышенной точности

Проблема точности возникает, как правило, при работе с микро- и мини-ЭВМ, имеющих небольшую длину машинного слова (1-2 байта). Рассмотрим микропроцессор, работающий со словами длины 1 байт. Этот формат позволяет представить целые числа в диапазоне от -128 до 127.

Очевидно, что для решения большинства задач такого диапазона чисел недостаточно. Использование двух однобайтовых слов (16 бит) позволяет представить уже числа в диапазоне от -32768 до 32767. Это так назы­ваемые числа с двойной точностью. Иногда используются числа тройной точности (1 бит – знак и 23 бита для модуля числа).

Это обеспечивает диапазон уже от -8388608 до 8388607, т.е. точность существенно повышается.

Однако при работе с арифметикой повы­шен­ной точности требуется больший объем памяти для хранения того же объема данных и более интенсивная работа процессора. Увеличение объема требуемой памяти достаточно очевидно.

Рассмотрим очень коротко последовательность операций при сложении чисел с тройной точностью. Здесь уже недостаточно извлечь два слова из памяти, сформировать сумму в аккумуляторе и переслать результат в однобайтовую ячейку памяти.

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

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

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

Источник: https://gigabaza.ru/doc/85775-p4.html

Арифметика в дополнительном коде

Источник: https://poisk-ru.ru/s59206t1.html

Урок на тему “Представление чисел в формате фиксированной запятой”

Тема урока:Представление чисел в формате с фиксированной запятой

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

ЦОР: презентация «Представление чисел в формате с фиксированной запятой»

Ход урока:

Организационный момент:

Приветствие учащихся, проверка явки, объявление темы и цели урока.

Объяснение нового материала(с использованием презентации)

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

А как представляются числа в памяти компьютера? Есть ли отличия в машинном выполнении арифметических операций?

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

Тема урока: Представление чисел в формате с фиксированной запятой

Изучаемые вопросы:

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

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

    • Размер ячейки и диапазон значений чисел.

    • Особенности работы компьютера с целыми числами.

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

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

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

Целые неотрицательные числа. Для хранения целых неотрицательных чисел отводится одна ячейка памяти (8 битов).

Минимальное число соответствует восьми нулям, хранящимся в восьми ячейках памяти, и равно нулю.

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

2n 1.

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

Минимальное число равно 0.

Максимальное число соответствует восьми единицам, хранящимся в ячейках памяти, и равно:

А = 1·27 +1·26 +1·25 + 1·24 + 1·23 + 1·22 + 1·21 + 1·2° = 1·28 – 1 = 25510.

Диапазон изменения целых неотрицательных чисел – от 0 до 255.

Целые числа со знаком. Для хранения целых чисел со знаком отводится две ячейки памяти (16 битов), а для хранения больших целых чисел со знаком отводится четыре ячейки памяти (32 бита). Старший (левый) разряд отводится под знак числа (если число положительное, то в знаковый разряд записывается 0, если число отрицательное — записывается 1).

Представление в компьютере положительных чисел с использованием формата «знак-величина» называется прямым кодом числа.

При представлении целых чисел в n-разрядном представлении со знаком максимальное положительное число (с учетом выделения одного разряда на знак) равно

А = 2n-1 – 1.

Минимальное отрицательное число равно А = -2n1.

Определиv диапазон чисел, которые могут храниться в оперативной памяти в формате:

  • целых чисел со знаком;

  • больших целых чисел со знаком.

а) Максимальное положительное целое число в формате целых чисел со знаком равно:

А10 = 215 – 1 = 32 76710.

Минимальное отрицательное целое число равно

А10 = -215 = -3276810.

б) Максимальное положительное целое число в формате больших целых чисел со знаком равно

А10 = 231 – 1 = 2 147 483 64710.

Минимальное отрицательное целое число равно

А10 = -231 = -2 147 483 64810.

А как представляются отрицательные числа в памяти компьютера? Достаточно ли только в старшем разряде, выделенном для хранения знака, указать 1?

Проверим на простом примере 3+(-3)=0.

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

Дополнительный код отрицательного числа А, хранящегося в n ячейках, равен 2n – |А|

Дополнительный код представляет собой дополнение модуля отрицательного числа А до 0, поэтому в n-разрядной компьютерной арифметике:

2n – |А| + |А| = 0.

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

Задание. Найдем дополнительный код отрицательного числа -2002 для 16-разрядного компьютерного представления.

Проведем вычисления в соответствии с определением дополнительного кода:

216

=

100000000000000002

6553610

200210

=

00000111110100102

200210

216- |200210|

=

11111000001011102

6353410

Проведем проверку с использованием десятичной системы счисления. Дополнительный код 63 53410 в сумме с модулем отрицательного числа 200210 равен 6553610, т. е. дополнительный код дополняет модуль отрицательного числа до 216 (до нуля 16-разрядной компьютерной арифметики).

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

Для получения дополнительного кода отрицательного числа можно использовать довольно простой алгоритм:

  1. Модуль числа записать прямым кодом в п двоичных разрядах.

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

  3. К полученному обратному коду прибавить единицу.

Задание «Вычисление дополнительного кода числа с использованием обратного кода». Вычислить дополнительный код отрицательного числа -2002 для 16-разрядного компьютерного представления с использованием алгоритма.

Прямой код

|-2002|

Обратный код

Инвертирование

Прибавление единицы

Дополнительный код

Задание «Арифметическое действие». Выполнить арифметическое действие 20103010в 16-разрядном компьютерном представлении.

Представим положительное число в прямом, а отрицательное число — в дополнительном коде:

Десятичное число

Прямой код

Обратный код

Дополнительный код

20

-30

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

2010 – 3010 11111111 111101102

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

  1. Инвертируем дополнительный код: 00000000 00001001.

  2. Прибавим к полученному коду 1 и получим модуль отрицательного числа: 00000000 00001010

3) Переведем в десятичное число и припишем знак отрицательного числа: -10.

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

  1. Модуль числа записать прямым кодом в п двоичных разрядах.

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

  3. К полученному обратному коду прибавить единицу.

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

Вопрос. Почему не применяется данный метод перевода дополнительного кода в десятичное число?

Ожидаемый ответ. Замена операции вычитания операцией сложения существенно упрощает работу процессора и увеличивает его быстродействие.

Задача. Найти минимальное отрицательное число в 8-разрядном компьютерном представлении

Переведем дополнительный код 1000000 в десятичное число:

  1. Инвертируем дополнительный код: 01111111

  2. К полученному коду прибавим 1 (получим модуль отрицательного числа): 10000000

  3. Переведем в десятичное число и припишем знак отрицательного числа: -128

Задача. Найти максимальное отрицательное число в 8-разрядном компьютерном представлении

Переведем дополнительный код 11111111 в десятичное число:

  1. Инвертируем дополнительный код: 00000000

  2. К полученному коду прибавим 1 (получим модуль отрицательного числа): 00000001

  3. Переведем в десятичное число и припишем знак отрицательного числа: -1

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

Выход результата за границы допустимого диапазона называется переполнением.

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

Задача. Компьютер работает только с целыми числами, представленными в однобайтовой ячейке памяти. Какое значение будет получено в результате вычисления значения арифметического выражения 100+39?

Результат: 10001011 – т.е. число отрицательное

Инвертируем: 01110100

Прибавляем 1: 01110101

Переводим в десятичное число, приписывая знак отрицательного числа: -117

Переполнение привело к неправильному результату!

Практикум (у интерактивной доски работает один ученик, остальные самостоятельно)

1. Записать внутреннее представление следующих десятичных чисел,

    • используя 8-разрядную ячейку: а) 64 б) -120 в) -96 г) 57

а)

1

б)

1

1

в)

1

1

г)

1

1

1

1

а) 64 = 0100 0000

б) -120|-120|=01111000 10000111 + 1 = 10001000

в) -96|-96|=01100000 10011111 + 1 = 10100000

г) 57 = 0011 1001

    • используя 16-разрядную ячейку: д) -15098 е) 6524 ж) -28987

д)

1

1

1

1

1

1

е)

1

1

1

1

1

1

1

1

ж)

1

1

1

1

1

1

1

1

д) -15098|-15098|=0011 1010 1111 1010 1100010100000101 + 1 = 1100010100000110

е) 6524 = 0001 1001 0111 1100

ж) -28987|-28987|=0111 0001 0011 1011 1000111011000100 + 1 = 1000111011000101

2. Определите, каким десятичным числам соответствуют следующие двоичные коды 8-разрядного представления целых чисел: а) 00100111 б) 11001110 в) 10101010 г) 01111110

а) 00100111 = 32+4+2+1 = 41

б) 11001110 00110001+1=00110010 32+16+2 = 50-50

в) 1010101001010101+1=01010110 64+16+4+2 = 86-86

г) 01111110 = 64+32+16+8+4+2= 126

Подведение итогов урока

  1. Дать общую характеристику работы класса.

  2. Показать успешность овладения содержанием урока.

  3. Вскрыть недостатки, показать пути их преодоления.

  4. Выставление оценок

Домашнее задание:

Учить: § 2.10.1 (с.143-148)

Выполнить: №1(в,г,е,ж), №2(в,г), №2.14 (с.147) и №2.15 (с.148)

Источник: https://infourok.ru/urok-na-temu-predstavlenie-chisel-v-formate-fiksirovannoy-zapyatoy-652637.html

Ссылка на основную публикацию
Adblock
detector
",css:{backgroundColor:"#000",opacity:.6}},container:{block:void 0,tpl:"
"},wrap:void 0,body:void 0,errors:{tpl:"
",autoclose_delay:2e3,ajax_unsuccessful_load:"Error"},openEffect:{type:"fade",speed:400},closeEffect:{type:"fade",speed:400},beforeOpen:n.noop,afterOpen:n.noop,beforeClose:n.noop,afterClose:n.noop,afterLoading:n.noop,afterLoadingOnShow:n.noop,errorLoading:n.noop},o=0,p=n([]),h={isEventOut:function(a,b){var c=!0;return n(a).each(function(){n(b.target).get(0)==n(this).get(0)&&(c=!1),0==n(b.target).closest("HTML",n(this).get(0)).length&&(c=!1)}),c}},q={getParentEl:function(a){var b=n(a);return b.data("arcticmodal")?b:(b=n(a).closest(".arcticmodal-container").data("arcticmodalParentEl"),!!b&&b)},transition:function(a,b,c,d){switch(d=null==d?n.noop:d,c.type){case"fade":"show"==b?a.fadeIn(c.speed,d):a.fadeOut(c.speed,d);break;case"none":"show"==b?a.show():a.hide(),d();}},prepare_body:function(a,b){n(".arcticmodal-close",a.body).unbind("click.arcticmodal").bind("click.arcticmodal",function(){return b.arcticmodal("close"),!1})},init_el:function(d,a){var b=d.data("arcticmodal");if(!b){if(b=a,o++,b.modalID=o,b.overlay.block=n(b.overlay.tpl),b.overlay.block.css(b.overlay.css),b.container.block=n(b.container.tpl),b.body=n(".arcticmodal-container_i2",b.container.block),a.clone?b.body.html(d.clone(!0)):(d.before("
"),b.body.html(d)),q.prepare_body(b,d),b.closeOnOverlayClick&&b.overlay.block.add(b.container.block).click(function(a){h.isEventOut(n(">*",b.body),a)&&d.arcticmodal("close")}),b.container.block.data("arcticmodalParentEl",d),d.data("arcticmodal",b),p=n.merge(p,d),n.proxy(e.show,d)(),"html"==b.type)return d;if(null!=b.ajax.beforeSend){var c=b.ajax.beforeSend;delete b.ajax.beforeSend}if(null!=b.ajax.success){var f=b.ajax.success;delete b.ajax.success}if(null!=b.ajax.error){var g=b.ajax.error;delete b.ajax.error}var j=n.extend(!0,{url:b.url,beforeSend:function(){null==c?b.body.html("
"):c(b,d)},success:function(c){d.trigger("afterLoading"),b.afterLoading(b,d,c),null==f?b.body.html(c):f(b,d,c),q.prepare_body(b,d),d.trigger("afterLoadingOnShow"),b.afterLoadingOnShow(b,d,c)},error:function(){d.trigger("errorLoading"),b.errorLoading(b,d),null==g?(b.body.html(b.errors.tpl),n(".arcticmodal-error",b.body).html(b.errors.ajax_unsuccessful_load),n(".arcticmodal-close",b.body).click(function(){return d.arcticmodal("close"),!1}),b.errors.autoclose_delay&&setTimeout(function(){d.arcticmodal("close")},b.errors.autoclose_delay)):g(b,d)}},b.ajax);b.ajax_request=n.ajax(j),d.data("arcticmodal",b)}},init:function(b){if(b=n.extend(!0,{},a,b),!n.isFunction(this))return this.each(function(){q.init_el(n(this),n.extend(!0,{},b))});if(null==b)return void n.error("jquery.arcticmodal: Uncorrect parameters");if(""==b.type)return void n.error("jquery.arcticmodal: Don't set parameter \"type\"");switch(b.type){case"html":if(""==b.content)return void n.error("jquery.arcticmodal: Don't set parameter \"content\"");var e=b.content;return b.content="",q.init_el(n(e),b);case"ajax":return""==b.url?void n.error("jquery.arcticmodal: Don't set parameter \"url\""):q.init_el(n("
"),b);}}},e={show:function(){var a=q.getParentEl(this);if(!1===a)return void n.error("jquery.arcticmodal: Uncorrect call");var b=a.data("arcticmodal");if(b.overlay.block.hide(),b.container.block.hide(),n("BODY").append(b.overlay.block),n("BODY").append(b.container.block),b.beforeOpen(b,a),a.trigger("beforeOpen"),"hidden"!=b.wrap.css("overflow")){b.wrap.data("arcticmodalOverflow",b.wrap.css("overflow"));var c=b.wrap.outerWidth(!0);b.wrap.css("overflow","hidden");var d=b.wrap.outerWidth(!0);d!=c&&b.wrap.css("marginRight",d-c+"px")}return p.not(a).each(function(){var a=n(this).data("arcticmodal");a.overlay.block.hide()}),q.transition(b.overlay.block,"show",1*")),b.overlay.block.remove(),b.container.block.remove(),a.data("arcticmodal",null),n(".arcticmodal-container").length||(b.wrap.data("arcticmodalOverflow")&&b.wrap.css("overflow",b.wrap.data("arcticmodalOverflow")),b.wrap.css("marginRight",0))}),"ajax"==b.type&&b.ajax_request.abort(),p=p.not(a))})},setDefault:function(b){n.extend(!0,a,b)}};n(function(){a.wrap=n(document.all&&!document.querySelector?"html":"body")}),n(document).bind("keyup.arcticmodal",function(d){var a=p.last();if(a.length){var b=a.data("arcticmodal");b.closeOnEsc&&27===d.keyCode&&a.arcticmodal("close")}}),n.arcticmodal=n.fn.arcticmodal=function(a){return e[a]?e[a].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof a&&a?void n.error("jquery.arcticmodal: Method "+a+" does not exist"):q.init.apply(this,arguments)}}(jQuery)}var debugMode="undefined"!=typeof debugFlatPM&&debugFlatPM,duplicateMode="undefined"!=typeof duplicateFlatPM&&duplicateFlatPM,countMode="undefined"!=typeof countFlatPM&&countFlatPM;document["wri"+"te"]=function(a){let b=document.createElement("div");jQuery(document.currentScript).after(b),flatPM_setHTML(b,a),jQuery(b).contents().unwrap()};function flatPM_sticky(c,d,e=0){function f(){if(null==a){let b=getComputedStyle(g,""),c="";for(let a=0;a=b.top-h?b.top-h{const d=c.split("=");return d[0]===a?decodeURIComponent(d[1]):b},""),c=""==b?void 0:b;return c}function flatPM_testCookie(){let a="test_56445";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(a){return!1}}function flatPM_grep(a,b,c){return jQuery.grep(a,(a,d)=>c?d==b:0==(d+1)%b)}function flatPM_random(a,b){return Math.floor(Math.random()*(b-a+1))+a}
");let k=document.querySelector(".flat_pm_modal[data-id-modal=\""+a.ID+"\"]");if(-1===d.indexOf("go"+"oglesyndication")?flatPM_setHTML(k,d):jQuery(k).html(b+d),"px"==a.how.popup.px_s)e.bind(h,()=>{e.scrollTop()>a.how.popup.after&&(e.unbind(h),f.unbind(i),j())}),void 0!==a.how.popup.close_window&&"true"==a.how.popup.close_window&&f.bind(i,()=>{e.unbind(h),f.unbind(i),j()});else{let b=setTimeout(()=>{f.unbind(i),j()},1e3*a.how.popup.after);void 0!==a.how.popup.close_window&&"true"==a.how.popup.close_window&&f.bind(i,()=>{clearTimeout(b),f.unbind(i),j()})}f.on("click",".flat_pm_modal .flat_pm_crs",()=>{jQuery.arcticmodal("close")})}if(void 0!==a.how.outgoing){let b,c="0"==a.how.outgoing.indent?"":" style=\"bottom:"+a.how.outgoing.indent+"px\"",e="true"==a.how.outgoing.cross?"":"",f=jQuery(window),g="scroll.out"+a.ID,h=void 0===flatPM_getCookie("flat_out_"+a.ID+"_mb")||"false"!=flatPM_getCookie("flat_out_"+a.ID+"_mb"),i=document.createElement("div"),j=jQuery("body"),k=()=>{void 0!==a.how.outgoing.cookie&&"false"==a.how.outgoing.cookie&&h&&(jQuery(".flat_pm_out[data-id-out=\""+a.ID+"\"]").addClass("show"),j.on("click",".flat_pm_out[data-id-out=\""+a.ID+"\"] .flat_pm_crs",function(){flatPM_setCookie("flat_out_"+a.ID+"_mb",!1)})),(void 0===a.how.outgoing.cookie||"false"!=a.how.outgoing.cookie)&&jQuery(".flat_pm_out[data-id-out=\""+a.ID+"\"]").addClass("show")};switch(a.how.outgoing.whence){case"1":b="top";break;case"2":b="bottom";break;case"3":b="left";break;case"4":b="right";}jQuery("body > *").eq(0).before("
"+e+"
");let m=document.querySelector(".flat_pm_out[data-id-out=\""+a.ID+"\"]");-1===d.indexOf("go"+"oglesyndication")?flatPM_setHTML(m,d):jQuery(m).html(e+d),"px"==a.how.outgoing.px_s?f.bind(g,()=>{f.scrollTop()>a.how.outgoing.after&&(f.unbind(g),k())}):setTimeout(()=>{k()},1e3*a.how.outgoing.after),j.on("click",".flat_pm_out .flat_pm_crs",function(){jQuery(this).parent().removeClass("show").addClass("closed")})}countMode&&(flat_count["block_"+a.ID]={},flat_count["block_"+a.ID].count=1,flat_count["block_"+a.ID].click=0,flat_count["block_"+a.ID].id=a.ID)}catch(a){console.warn(a)}}function flatPM_start(){let a=flat_pm_arr.length;if(0==a)return flat_pm_arr=[],void jQuery(".flat_pm_start, .flat_pm_end").remove();flat_body=flat_body||jQuery("body"),!flat_counter&&countMode&&(flat_counter=!0,flat_body.on("click","[data-flat-id]",function(){let a=jQuery(this),b=a.attr("data-flat-id");flat_count["block_"+b].click++}),flat_body.on("mouseenter","[data-flat-id] iframe",function(){let a=jQuery(this),b=a.closest("[data-flat-id]").attr("data-flat-id");flat_iframe=b}).on("mouseleave","[data-flat-id] iframe",function(){flat_iframe=-1}),jQuery(window).on("beforeunload",()=>{jQuery.isEmptyObject(flat_count)||jQuery.ajax({async:!1,type:"POST",url:ajaxUrlFlatPM,dataType:"json",data:{action:"flat_pm_ajax",data_me:{method:"flat_pm_block_counter",arr:flat_count}}})}).on("blur",()=>{-1!=flat_iframe&&flat_count["block_"+flat_iframe].click++})),flat_userVars.init();for(let b=0;bflat_userVars.textlen||void 0!==a.chapter_sub&&a.chapter_subflat_userVars.titlelen||void 0!==a.title_sub&&a.title_subc&&cc&&c>d&&(b=flatPM_addDays(b,-1)),b>e||cd||c-1!=flat_userVars.referer.indexOf(a))||void 0!==a.referer.referer_disabled&&-1!=a.referer.referer_disabled.findIndex(a=>-1!=flat_userVars.referer.indexOf(a)))&&(c=!0),c||void 0===a.browser||(void 0===a.browser.browser_enabled||-1!=a.browser.browser_enabled.indexOf(flat_userVars.browser))&&(void 0===a.browser.browser_disabled||-1==a.browser.browser_disabled.indexOf(flat_userVars.browser)))){if(c&&void 0!==a.browser&&void 0!==a.browser.browser_enabled&&-1!=a.browser.browser_enabled.indexOf(flat_userVars.browser)&&(c=!1),!c&&(void 0!==a.geo||void 0!==a.role)&&(""==flat_userVars.ccode||""==flat_userVars.country||""==flat_userVars.city||""==flat_userVars.role)){flat_pm_then.push(a),flatPM_setWrap(a),flat_body.hasClass("flat_pm_block_geo_role")||(flat_body.addClass("flat_pm_block_geo_role"),flatPM_ajax("flat_pm_block_geo_role")),c=!0}c||(flatPM_setWrap(a),flatPM_next(a))}}}let b=jQuery(".flatPM_sticky");b.each(function(){let a=jQuery(this),b=a.data("height")||350,c=a.data("top");a.wrap("
");let d=a.parent()[0];flatPM_sticky(this,d,c)}),debugMode||countMode||jQuery("[data-flat-id]:not([data-id-out]):not([data-id-modal])").contents().unwrap(),flat_pm_arr=[],jQuery(".flat_pm_start, .flat_pm_end").remove()}

Поиск Лекций

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

Пример

Выполнить сложение и вычитание в дополнительном коде разрядности п = 8: а) 18(10)+7(10); б) 35(10)−7(10)в) 18(10)−35(10)г) −35(10)−18(10)

а) Число 18(10)= 10010(2),при разрядности n = 8, представляется дополнительным кодом 00010010. Число 7(10)=111(2),представляется дополнительным кодом 00000111. Выполняя двоичное сложение кодов, получим дополнительный код результата 00011001. Прочитаем результат: 11001(2)= 25(10).

б) Число 35(10)=100011(2) представляется дополнительным кодом 00100011, число −7(10)= −111(2) представляется дополнительным кодом 11111001. Выполняя двоичное сложение кодов, получим результат 00011100, в дополнительном коде. Перенос из знакового бита не учитывается. Результат положительный. Дополнительный код совпадает с прямым. Прочитаем результат: 11100(2)= 28(10).

в) Число 18(10)= 10010(2)представляется дополнительным кодом 00010010, число 35(10)=100011(2) – кодом 00100011, а противоположное ему −35(10) − кодом 11011101. Результат сложения: 11101111, противоположное число имеет код: 00010001. Читаем противоположное: 10001(2)= 17(10);а результат − 17(10).

г) Дополнительный код −35(10): 11011101. Дополнительный код −18(10): 11101110. Результат сложения: 11001011, код обратного числа: 00110101. Обратное число: 110101(2) = 53(10),а результат − 53(10).

Кодирование числа с плавающей запятой

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

Рациональное представление предназначено для записи в память ЭВМ чисел, заданных простой дробью, числитель и знаменатель хранятся отдельно в целочисленном представлении.

Примеры

1. Представить число −1,2(10) в рациональном представлении: 1−4 биты – числитель (в дополнительном коде, целое), 5−8 биты − знаменатель (без знака, целое).

Представим число в виде простой неправильной дроби и переведем его в двоичную форму записи:

Числитель −110(2) в дополнительном коде разрядности n = 4 запишется комбинацией 1010, знаменатель 101(2) – комбинацией 0101. Кодовая комбинация рационального представления имеет вид: 10100101.

Ответ: 10100101.

2. Прочитать число, записанное в рациональном представлении: 1−4 биты – числитель (в дополнительном коде, целое), 5−8 биты − знаменатель (без знака, целое), кодом 10011010.

Прочитав дополнительный код целого числителя 1001, получим: −111(2). Код целого знаменателя 1010 при чтении дает число: 1010(2).

Ответ: -0,7(10) .

Представление числа с плавающей запятой применяется для расширения диапазона представимых чисел. Представление с плавающей запятой построено на основе показательной формы записи двоичного числа А:

где m – мантисса числа, являющаяся числом с фиксированной запятой со знаком, удовлетворяющим условию нормировки.

r – порядок, являющийся целым числом со знаком. Условие нормировки делает соответствие естественной и показательной форм записи числа однозначным. Мантисса m несет информацию о разрядах числа, а порядок r − о положении запятой в записи числа

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

Примеры

1. Представить число с плавающей запятой: 1−11 биты − мантисса со знаком (в дополнительном коде, с фиксированной запятой, нормированная), 12−16 биты − порядок со знаком (целое в дополнительном коде), а) 1101,1101(2); б) 0,00011101(2); в) −11111110111(2); г) −0,0(0111)(2).

Описанное в условии задачи представление с плавающей запятой порождает кодовые комбинации разрядности n = 16, при этом в старших разрядах располагается мантисса с собственной разрядностью nm = 11, а в младших разрядах − порядок с разрядностью nr = 5.

На первом этапе выполняют переход от естественной формы записи числа к показательной. Условие нормировки означает, что запятую в записи числа следует перенести так, чтобы получить 0 в разряде целых и 1 в старшем разряде дробной части.

Перемещение запятой компенсируют подбором порядка. Мантисса в данном формате хранит 10 разрядов числа; если в записи нормированной мантиссы их больше, необходимо выполнить округление.

Округление выполняется путем устранения разрядов с наименьшим весом.

На втором этапе, после записи числа в показательной форме, с мантиссой и порядком работают раздельно. Готовые коды мантиссы и порядка объединяют. Длинные комбинации кода, для облегчения практической работы с ними, разбивают на триады или тетрады.

a) m: ПК=ДК
r: ПК=ДК
б) m: ПК=ДК
r: ПК
ОК
ДК
в) m: ПК
ОК
ДК
r: ПК
г) m: ПК
ОК
ДК
r: ПК
ОК
ДК

Рис 4.

а) Представим число в показательной форме:

.

Для выполнения условия нормировки потребовалось сместить запятую в записи числа влево на 4 разряда, что и отражено в порядке показательной формы. Мантисса m и порядок r записанные, в дополнительном коде представлены на рис. 4, а.

Ответ: 0110 1110 1000 0100.

б) Представим число в показательной форме:

Для выполнения условия нормировки потребовалось сместить запятую в записи числа вправо на 3 разряда, что отражено в порядке r.

Мантисса m и порядок r записанные в дополнительном коде представлены на рис. 4, б.

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

Ответ: 0111 0100 0001 1101.

в) Показательная форма заданного числа имеет вид:

Выполнение условия нормировки требует сместить запятую в записи числа влево на 11 разрядов. В мантиссе оказалось 11 разрядов. Округление выполнено в младшем разряде, при чтении этот разряд будет нулевым. Перевод мантиссы m и порядка r в дополнительный код представлен на рис. 4, в.

Ответ: 1000 0000 1010 1011.

г) Округлим число так, чтобы осталось 10 разрядов, которые можно записать в мантиссу, затем представим округленное число в показательной форме:

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

Ответ: 1000 1000 1011 1110.

2. Для формата, описанного в предыдущем примере, прочитать число с плавающей запятой а) 0111 0101 0000 0110; б) 1000 1010 0001 0101.

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

а) m: ДК=ПК
r: ДК=ПК
б) m: ДК
−ПК
r: ДК
−ПК

Рис 5.

а) Разбиение кода на группы, соответствующие мантиссе и порядку и подготовка к чтению этих групп представлены на рис.5, а. Показательная и естественная формы числа имеют вид:

Ответ: 111010,1(2).

б) Разбиение кода на группы и подготовка к их чтению представлены на рис. 5, б. Показательная и естественная формы числа имеют вид:

Ответ: -0,000000111011(2).