- Учителю
- Урок на тему 'Представление чисел в формате фиксированной запятой'
Урок на тему 'Представление чисел в формате фиксированной запятой'
Тема урока: Представление чисел в формате с фиксированной запятой
Цель урока. Углубить знания учащихся о представлении чисел в формате с фиксированной запятой в памяти компьютера.
ЦОР: презентация «Представление чисел в формате с фиксированной запятой»
Ход урока:
Организационный момент:
Приветствие учащихся, проверка явки, объявление темы и цели урока.
Объяснение нового материала (с использованием презентации)
Ребята, на прошлых уроках мы познакомились с представлением чисел в различных системах счисления, переводом чисел из одной системы счисления в другую. Вы научились выполнять арифметические операции в различных позиционных системах счисления.
А как представляются числа в памяти компьютера? Есть ли отличия в машинном выполнении арифметических операций?
Сегодня мы попробуем разобраться в этих вопросах применительно к целым числам.
Тема урока: Представление чисел в формате с фиксированной запятой
Изучаемые вопросы:
-
Представление целых чисел в памяти компьютера.
-
Представление отрицательных чисел в памяти компьютера.
-
Размер ячейки и диапазон значений чисел.
-
Особенности работы компьютера с целыми числами.
Целые числа в компьютере хранятся в памяти в формате с фиксированной запятой. В этом случае каждому разряду ячейки памяти соответствует всегда один и тот же разряд числа, а запятая находится справа после младшего разряда, т. е. вне разрядной сетки.
Достоинствами представления чисел в формате с фиксированной запятой являются простота и наглядность представления чисел, а также простота алгоритмов реализации арифметических операций (вычитание благодаря использованию дополнительного кода для представления отрицательных чисел сводится к сложению).
Недостатком представления чисел в формате с фиксированной запятой является конечный диапазон представления величин, недостаточный для решения математических, физических, экономических и других задач, в которых используются как очень малые, так и очень большие числа.
Целые неотрицательные числа. Для хранения целых неотрицательных чисел отводится одна ячейка памяти (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.
Минимальное отрицательное число равно А = -2n-1.
Определи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.
00000011
+10000011
10000110 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-разрядной компьютерной арифметики).
Алгоритм получения дополнительного кода.
Для получения дополнительного кода отрицательного числа можно использовать довольно простой алгоритм:
-
Модуль числа записать прямым кодом в п двоичных разрядах.
-
Получить обратный код числа, для этого значения всех битов инвертировать (все единицы заменить на нули и все нули заменить на единицы).
-
К полученному обратному коду прибавить единицу.
Задание «Вычисление дополнительного кода числа с использованием обратного кода». Вычислить дополнительный код отрицательного числа -2002 для 16-разрядного компьютерного представления с использованием алгоритма.
Прямой код
|-2002|
00000111110100102
Обратный код
Инвертирование
11111000001011012
Прибавление единицы
11111000001011012
+00000000000000012
Дополнительный код
11111000001011102
Задание «Арифметическое действие». Выполнить арифметическое действие 2010 - 3010 в 16-разрядном компьютерном представлении.
Представим положительное число в прямом, а отрицательное число - в дополнительном коде:
Десятичное число
Прямой код
Обратный код
Дополнительный код
20
00000000 000101002
-30
00000000 000111102
11111111 111000012
11111111 111000012
00000000 000000012
11111111 111000102
Сложим прямой код положительного числа с дополнительным кодом отрицательного числа. Получим результат в дополнительном коде:
2010 - 3010® 11111111 111101102
Переведем полученный дополнительный код в десятичное число:
-
Инвертируем дополнительный код: 00000000 00001001.
-
Прибавим к полученному коду 1 и получим модуль отрицательного числа: 00000000 00001010
3) Переведем в десятичное число и припишем знак отрицательного числа: -10.
Вспомним алгоритм получения дополнительного кода:
-
Модуль числа записать прямым кодом в п двоичных разрядах.
-
Получить обратный код числа, для этого значения всех битов инвертировать (все единицы заменить на нули и все нули заменить на единицы).
-
К полученному обратному коду прибавить единицу.
Если выполнить этот алгоритм в обратном порядке, то тоже сможем перевести полученный дополнительный код в десятичное число.
Вопрос. Почему не применяется данный метод перевода дополнительного кода в десятичное число?
Ожидаемый ответ. Замена операции вычитания операцией сложения существенно упрощает работу процессора и увеличивает его быстродействие.
Задача. Найти минимальное отрицательное число в 8-разрядном компьютерном представлении
Переведем дополнительный код 1000000 в десятичное число:
-
Инвертируем дополнительный код: 01111111
-
К полученному коду прибавим 1 (получим модуль отрицательного числа): 10000000
-
Переведем в десятичное число и припишем знак отрицательного числа: -128
Задача. Найти максимальное отрицательное число в 8-разрядном компьютерном представлении
Переведем дополнительный код 11111111 в десятичное число:
-
Инвертируем дополнительный код: 00000000
-
К полученному коду прибавим 1 (получим модуль отрицательного числа): 00000001
-
Переведем в десятичное число и припишем знак отрицательного числа: -1
Выполняя на компьютере вычисления с целыми числами, нужно помнить об ограниченности диапазона допустимых значений.
Выход результата за границы допустимого диапазона называется переполнением.
Переполнение при вычислениях с целыми числами не вызывает прерывания работы процессора, но результаты могут оказаться неправильными.
Задача. Компьютер работает только с целыми числами, представленными в однобайтовой ячейке памяти. Какое значение будет получено в результате вычисления значения арифметического выражения 100+39?
Результат: 10001011 - т.е. число отрицательное
Инвертируем: 01110100
Прибавляем 1: 01110101
Переводим в десятичное число, приписывая знак отрицательного числа: -117
Переполнение привело к неправильному результату!
Практикум (у интерактивной доски работает один ученик, остальные самостоятельно)
1. Записать внутреннее представление следующих десятичных чисел,
-
используя 8-разрядную ячейку: а) 64 б) -120 в) -96 г) 57
-
а)
0
1
0
0
0
0
0
0
б)
1
0
0
0
1
0
0
0
в)
1
0
1
0
0
0
0
0
г)
0
0
1
1
1
0
0
1
а) 64 = 0100 0000
б) -120 |-120|=01111000 10000111 + 1 = 10001000
Проверка б):
01111000
+10001000
100000000
в) -96 |-96|=01100000 10011111 + 1 = 10100000
г) 57 = 0011 1001
-
используя 16-разрядную ячейку: д) -15098 е) 6524 ж) -28987
-
д)
1
1
0
0
0
1
0
1
0
0
0
0
0
1
1
0
е)
0
0
0
1
1
0
0
1
0
1
1
1
1
1
0
0
ж)
1
0
0
0
1
1
1
0
1
1
0
0
0
1
0
1
д) -15098 |-15098|=0011 1010 1111 1010 1100010100000101 + 1 = 1100010100000110
е) 6524 = 0001 1001 0111 1100
ж) -28987 |-28987|=0111 0001 0011 1011 1000111011000100 + 1 = 1000111011000101
Проверка в):
0111000100111011
+1000111011000101
10000000000000000
2. Определите, каким десятичным числам соответствуют следующие двоичные коды 8-разрядного представления целых чисел: а) 00100111 б) 11001110 в) 10101010 г) 01111110
а) 00100111 = 32+4+2+1 = 41
б) 11001110 00110001+1=00110010 32+16+2 = 50 -50
в) 10101010 01010101+1=01010110 64+16+4+2 = 86 -86
г) 01111110 = 64+32+16+8+4+2= 126
Подведение итогов урока
-
Дать общую характеристику работы класса.
-
Показать успешность овладения содержанием урока.
-
Вскрыть недостатки, показать пути их преодоления.
-
Выставление оценок
Домашнее задание:
Учить: § 2.10.1 (с.143-148)
Выполнить: №1(в,г,е,ж), №2(в,г), №2.14 (с.147) и №2.15 (с.148)