Скачать 132.47 Kb.
|
УРОК №22. Тема Представление целых чисел в компьютере. Цель урока: ввести понятия: машинное слово, прямой код, дополнительный код. Задачи урока:
Материалы и оборудование к уроку: презентация, конспект урока, карточки с практической работой, файл с решением задач по теме (для отбора задач к уроку). Тип урока: комбинированный урок объяснения нового материала и решения задач. Форма проведения урока: беседа, практическая работа по решению задач, парная, индивидуальная, фронтальная формы работы. План урока:
2. Закрепление изученного.3. Домашнее задание.Ход урока: 1. Новый материал. 1. Целые числа. Представление чисел в формате с фиксированной запятой. Фиксированная запятая. Целые числа в компьютере хранятся в памяти в формате с фиксированной запятой или фиксированной точкой. В этом случае каждому разряду ячейки памяти соответствует всегда один и тот же разряд числа, а запятая находится справа после младшего разряда, т.е. вне разрядной сетки. Для хранения целых неотрицательных чисел отводится одна ячейка памяти (8 битов). Например, число А2 = 111100002 будет храниться в ячейке памяти следующим образом: Максимальное значение целого неотрицательного числа достигается в случае, когда во всех ячейках хранятся единицы. Если в первых двух ячейках 11, а в остальных 0, то значение числа будет равно 3, если число представлено как 111, то значение числа 7, если единицами занято 8 разрядов, то значение числа равно 2 8 -1 =256-1=255, так как отсчет начинается с 0. Для п-разрядного представления оно будет равно 2n -1. Это можно доказать и по-другому: Максимальное число соответствует восьми единицам и равно А = 1▪27 +1▪26 +1▪25 + 1▪24 + 1▪23 + 1▪22 + 1▪21 + 1▪2° = 1▪28 - 1 = 25510. Диапазон изменения целых неотрицательных чисел: от 0 до 255. Итак, целые числа могут представляться в компьютере со знаком или без знака. Целые числа без знака обычно занимают в памяти один или два байта и принимают в однобайтовом формате значения от 000000002 до 111111112, а в двубайтовом формате — от 00000000 000000002 до 11111111 111111112. Диапазоны значений целых чисел без знака
Примеры: а) число 7210 = 10010002 в однобайтовом формате: б) это же число в двубайтовом формате: в) число 65535 в двубайтовом формате: Машинное слово. Множество целых чисел, представимых в памяти ЭВМ ограничено и зависит от размера ячеек памяти (машинного слова), используемых для их хранения. В k-разрядной ячейке может храниться 2k различных значений целых чисел. Представление целых положительных чисел. Алгоритм№1 получения внутреннего представления целого положительного числа N, хранящегося в k разрядном машинном слове: 1. Перевести число N в двоичную систему счисления. 2. Полученный результат дополнить слева незначащими нулями до k разрядов. Представление целых чисел со знаком. Прямой код числа. Для хранения целых чисел со знаком отводится две ячейки памяти (16 битов), причем старший (левый) разряд отводится под знак числа (если число положительное, то в знаковый разряд записывается 0, если число отрицательное — 1). Представление в компьютере положительных чисел с использованием формата «знак-величина» называется прямым кодом числа. Например, число 200210 = 111110100102 будет представлено в 16-разрядном представлении следующим образом:
Максимальное положительное число (с учетом выделения одного разряда на знак) для целых чисел со знаком в n-разрядном представлении равно: А = 2п -1 - 1. (один разряд на знак). Целые числа со знаком обычно занимают в памяти компьютера один, два или четыре байта, при этом самый левый (старший) разряд содержит информацию о знаке числа. Знак “плюс” кодируется нулем, а “минус” — единицей. Диапазоны значений целых чисел со знаком
Числа, для хранения которых отводится четыре ячейки памяти –32 бита, это числа, хранящиеся в оперативной памяти в формате длинных целых чисел со знаком. Значения минимального отрицательного и максимального положительного чисел ограничены. Это недостаток представления чисел в формате с фиксированной запятой. Алгоритм№2 Получение внутреннего представления целого числа со знаком, хранящегося в k разрядном машинном слове (запись числа в прямом коде):
Дополнительный код. Обратный код. Итак, в компьютерной технике применяются три формы записи (кодирования) целых чисел со знаком:
Для представления отрицательных чисел используется дополнительный код. Дополнительный код позволяет заменить арифметическую операцию вычитания операцией сложения, что существенно упрощает работу процессора и увеличивает его быстродействие. Последние две формы применяются особенно широко, так как позволяют упростить конструкцию арифметико-логического устройства компьютера путем замены разнообразных арифметических операций операцией cложения. Рассмотрим особенности записи целых чисел со знаком на примере однобайтового формата, при котором для знака отводится один разряд, а для цифр абсолютной величины – семь разрядов. Положительные числа в прямом, обратном и дополнительном кодах изображаются одинаково — двоичными кодами с цифрой 0 в знаковом разряде. Например: Отрицательные числа в прямом, обратном и дополнительном кодах имеют разное изображение. 1. Прямой код. В знаковый разряд помещается цифра 1, а в разряды цифровой части числа — двоичный код его абсолютной величины. Например: 2. Обратный код. Получается инвертированием всех цифр двоичного кода абсолютной величины числа (модуля числа), включая разряд знака: нули заменяются единицами, а единицы — нулями. Например: 3. Дополнительный код. Получается образованием обратного кода с последующим прибавлением единицы к его младшему разряду. Например: Обычно отрицательные десятичные числа при вводе в машину автоматически преобразуются в обратный или дополнительный двоичный код и в таком виде хранятся, перемещаются и участвуют в операциях. При выводе таких чисел из машины происходит обратное преобразование в отрицательные десятичные числа. 2. Как компьютер выполняет арифметические действия над целыми числами?Сложение и вычитаниеВ большинстве компьютеров операция вычитания не используется. Вместо нее производится сложение уменьшаемого с обратным или дополнительным кодом вычитаемого. Это позволяет существенно упростить конструкцию АЛУ. При сложении обратных кодов чисел А и В имеют место четыре основных и два особых случая: 1. А и В положительные. При суммировании складываются все разряды, включая разряд знака. Так как знаковые разряды положительных слагаемых равны нулю, разряд знака суммы тоже равен нулю. Например: Получен правильный результат. 2. А положительное, B отрицательное и по абсолютной величине больше, чем А. Например: Получен правильный результат в обратном коде. При переводе в прямой код биты цифровой части результата инвертируются: 1 0000111 = –710. 3. А положительное, B отрицательное и по абсолютной величине меньше, чем А. Например: Компьютер исправляет полученный первоначально неправильный результат (6 вместо 7) переносом единицы из знакового разряда в младший разряд суммы!!! 4. А и В отрицательные. Например: Полученный первоначально неправильный результат (обратный код числа –1110 вместо обратного кода числа –1010) компьютер исправляет переносом единицы из знакового разряда в младший разряд суммы. При переводе результата в прямой код биты цифровой части числа инвертируются: 1 0001010 = –1010. При сложении может возникнуть ситуация, когда старшие разряды результата операции не помещаются в отведенной для него области памяти. Такая ситуация называется переполнением разрядной сетки формата числа. Для обнаружения переполнения и оповещения о возникшей ошибке в компьютере используются специальные средства. Ниже приведены два возможных случая переполнения (используем калькулятор для быстрого перевода: МС – очистка памяти, МР- чтение памяти, М+ добавить в память). 5. А и В положительные, сумма А+В больше, либо равна 2n–1, где n – количество разрядов формата чисел (для однобайтового формата n=8, 2n–1 = 27 = 128). Например: Семи разрядов цифровой части числового формата недостаточно для размещения восьмиразрядной суммы (16210 = 101000102), поэтому старший разряд суммы оказывается в знаковом разряде. Это вызывает несовпадение знака суммы и знаков слагаемых (знак суммы – отрицателен, знак слагаемых – положительный), что является свидетельством переполнения разрядной сетки. 6. А и В отрицательные, сумма абсолютных величин А и В больше, либо равна 2n–1. Например: 632 =01111112 Здесь знак суммы тоже не совпадает со знаками слагаемых, что свидетельствует о переполнении разрядной сетки. Все эти случаи имеют место и при сложении дополнительных кодов чисел: 1. А и В положительные. Здесь нет отличий от случая 1, рассмотренного для обратного кода, т.к. дополнительны код используется только для отрицательных чисел. 2. А положительное, B отрицательное и по абсолютной величине больше, чем А. Например: Получен правильный результат в дополнительном коде. При переводе в прямой код биты цифровой части результата инвертируются и к младшему разряду прибавляется единица: 1 0000110 + 1 = 1 0000111 = –710. 3. А положительное, B отрицательное и по абсолютной величине меньше, чем А. Например: Получен правильный результат. Единицу переноса из знакового разряда компьютер отбрасывает. 4. А и В отрицательные. Например: Получен правильный результат в дополнительном коде. Единицу переноса из знакового разряда компьютер отбрасывает. Случаи переполнения для дополнительных кодов рассматриваются по аналогии со случаями 5 и 6 для обратных кодов. Вопросы учащимся: 1. Какие выводы можно сделать из рассмотренных примеров кодирования чисел и арифметических действий с числами? (Оцените удобство выполнения операций). Сравнение рассмотренных форм кодирования целых чисел со знаком показывает:
2. Назовите алгоритмы перевода чисел в обратный и дополнительный коды:Алгоритм№3 (перевод числа в обратный код)Обратный код.
Алгоритм№4 (перевод отрицательного числа в дополнительный код).Дополнительный код отрицательного числа.
3. Назовите алгоритм перевода дополнительного кода в десятичное число Алгоритм №5 перевода дополнительного кода в десятичное число. 1) Инвертировать дополнительный код 2) Прибавить к полученному коду 1 и получить модуль отрицательного числа: 3) Перевести в десятичное число и приписать знак отрицательного числа. 4. В чем вы видите достоинства представления чисел в формате с фиксированной запятой? Ответ: простота и наглядность представления чисел, простота алгоритмов реализации арифметических операций.5.Рассмотрите пример записи дополнительного кода отрицательного числа -2002 для 16 разрядного компьютерного представления (учебник, стр. 105). В чем сущность использования дополнительного кода?Ответ:При n-разрядном представлении отрицательного числа в дополнительном коде старший разряд выделяется для хранения знака числа (единицы). В остальных разрядах записывается положительное число.Умножение и делениеВо многих компьютерах умножение производится как последовательность сложений и сдвигов. Для этого в АЛУ имеется регистр, называемый накапливающим сумматором, который до начала выполнения операции содержит число ноль. В процессе выполнения операции в нем поочередно размещаются множимое и результаты промежуточных сложений, а по завершении операции — окончательный результат. Другой регистр АЛУ, участвующий в выполнении этой операции, вначале содержит множитель. Затем по мере выполнения сложений содержащееся в нем число уменьшается, пока не достигнет нулевого значения. Для иллюстрации умножим 1100112 на 1011012. Регистр 1 Регистр 2 (результаты промежуточных сложений) Деление для компьютера является трудной операцией. Обычно оно реализуется путем многократного прибавления к делимому дополнительного кода делителя. (В рамках школьной программы не рассматривается) 2. Закрепление полученных знаний. Задание 1. Запишите уменьшающийся ряд чисел +3, +2, ..., -3 в однобайтовом формате:
Решение: а) 00000011, 00000010, 00000001, 00000000, 10000001, 10000010, 10000011; б) 00000011, 00000010, 00000001, 00000000, 11111110, 11111101, 11111100; в) 00000011, 00000010, 00000001, 00000000, 11111111, 11111110, 11111101. Задание 2. Запишите числа в прямом коде (формат 1 байт): а) 31; б) -63; в) 65; г) -128. Решение: а) 00001111; б) 10111111; в) 01000001; г) невозможно. Задание 3. Запишите числа в обратном и дополнительном кодах (формат 1 байт): а) -9; б) -15; в) -127; г) -128. Решение: Обратный: а) 11110110, б) 11110000, в) 10000000, г) невозможнo. Дополнительный: а) 11110111; б) 11110001; в) 10000001; г) 10000000. Задание 4. Найдите десятичные представления чисел, записанных в дополнительном коде: а) 1 1111000; б) 1 0011011; в) 1 1101001; г) 1 0000000. Решение: а) -8; б) -101; в) -23; г) -128. Задание 5. Найдите десятичные представления чисел, записанных в обратном коде: а) 1 1101000; б) 1 0011111; в) 1 0101011; г) 1 0000000. Решение: а) -23; б) -96; в) -84; г) -127. Задание 6. (а, ж. и) Выполните вычитания чисел путем сложения их обратных (дополнительных) кодов в формате 1 байт. Укажите, в каких случаях имеет место переполнение разрядной сетки:
Решение: Обратный: а) 00000111; б) 11111000; в) 11110011; г) 11100001; д) 00011001; е) 01111110; ж) переполнение; з) 10000000; и) невозможно. Дополнительный: а) 00000111; б) 11111001; в) 11110100; г) 11100010; д) 00011001; е) 01111110; ж) переполнение; з) 10000001; и) 10000000. 3. Домашнее задание: 1. Угринович Н.Д. п. 2.9., стр.103-105. 2. Задание №6 (оставшиеся примеры) |