Тема урока: Представление чисел в формате с фиксированной
запятой
Цель урока. Углубить знания
учащихся о представлении чисел в формате с фиксированной запятой в памяти
компьютера.
ЦОР: презентация «Представление
чисел в формате с фиксированной запятой»
Ход урока:
Организационный
момент:
Приветствие учащихся,
проверка явки, объявление темы и цели урока.
Объяснение
нового материала (с использованием презентации)
Ребята,
на прошлых уроках мы познакомились с представлением чисел в различных системах
счисления, переводом чисел из одной системы счисления в другую. Вы научились
выполнять арифметические операции в различных позиционных системах счисления.
А
как представляются числа в памяти компьютера? Есть ли отличия в машинном
выполнении арифметических операций?
Сегодня
мы попробуем разобраться в этих вопросах применительно к целым числам.
Тема
урока: Представление чисел в
формате с фиксированной запятой
Изучаемые
вопросы:
•
Представление целых чисел в
памяти компьютера.
•
Представление отрицательных
чисел в памяти компьютера.
•
Размер ячейки и диапазон
значений чисел.
•
Особенности работы
компьютера с целыми числами.
Целые
числа в компьютере хранятся в памяти в формате с фиксированной запятой. В
этом случае каждому разряду ячейки памяти соответствует всегда один и тот
же разряд числа, а запятая находится справа после младшего разряда, т. е. вне
разрядной сетки.
Достоинствами представления чисел в формате с фиксированной
запятой являются простота и наглядность представления чисел, а также простота
алгоритмов реализации арифметических операций (вычитание благодаря
использованию дополнительного кода для представления отрицательных чисел
сводится к сложению).
Недостатком
представления чисел в формате с
фиксированной запятой является конечный диапазон представления величин,
недостаточный для решения математических, физических, экономических и других
задач, в которых используются как очень малые, так и очень большие числа.
Целые
неотрицательные числа. Для хранения целых
неотрицательных чисел отводится одна ячейка памяти (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-разрядной компьютерной арифметики).
Алгоритм
получения дополнительного кода.
Для
получения дополнительного кода отрицательного числа можно использовать довольно
простой алгоритм:
1.
Модуль числа записать прямым
кодом в п двоичных разрядах.
2.
Получить обратный код числа,
для этого значения всех битов инвертировать (все единицы заменить на нули и все
нули заменить на единицы).
3. К полученному обратному коду прибавить единицу.
Задание
«Вычисление дополнительного кода числа с использованием обратного кода». Вычислить дополнительный код отрицательного числа
-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
Переведем полученный
дополнительный код в десятичное число:
1)
Инвертируем дополнительный код:
00000000 00001001.
2) Прибавим к полученному коду 1 и получим модуль
отрицательного числа: 00000000 00001010
3) Переведем в
десятичное число и припишем знак отрицательного числа: -10.
Вспомним
алгоритм получения дополнительного кода:
1.
Модуль числа записать прямым
кодом в п двоичных разрядах.
2.
Получить обратный код числа,
для этого значения всех битов инвертировать (все единицы заменить на нули и все
нули заменить на единицы).
3.
К полученному обратному коду
прибавить единицу.
Если
выполнить этот алгоритм в обратном порядке, то тоже сможем перевести полученный
дополнительный код в десятичное число.
Вопрос. Почему не применяется данный метод
перевода дополнительного кода в десятичное число?
Ожидаемый ответ. Замена операции вычитания
операцией сложения существенно упрощает работу процессора и увеличивает его
быстродействие.
Задача. Найти минимальное отрицательное число в 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
Подведение
итогов урока
1. Дать общую характеристику работы класса.
2. Показать успешность овладения содержанием
урока.
3. Вскрыть недостатки, показать пути их
преодоления.
4. Выставление оценок
Домашнее
задание:
Учить: § 2.10.1
(с.143-148)
Выполнить: №1(в,г,е,ж), №2(в,г), №2.14 (с.147) и №2.15
(с.148)
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.