презентация подготовлена учителем информатики МОУ СОШ №8 Константиновой Еленой Ивановной Представление чисел в памяти компьютера
Cлайд 2
Как представляются в компьютере целые числа? Целые числа могут представляться в компьютере со знаком или без знака. Целые числа без знака обычно занимают в памяти один или два байта и принимают в однобайтовом формате значения от 000000002 до 111111112 , а в двубайтовом формате - от 00000000 000000002 до 11111111111111112.
Cлайд 3
Диапазоны значений целых чисел без знака Формат числа в байтах Диапазон Запись с порядком Обычная запись 1 0 ... 28-1 0 ... 255 2 0 ... 216-1 0 ... 65535
Cлайд 4
Число 3910 = 100111 2 в однобайтовом формате: Число 3910 = 100111 2 в двубайтовом формате: Число 65 53510 = 11111111 111111112 в двубайтовом формате:
Cлайд 5
Целые числа со знаком обычно занимают в памяти компьютера один, два или четыре байта, при этом самый левый (старший) разряд содержит информацию о знаке числа. Знак "плюс" кодируется нулем, а "минус" - единицей. Диапазоны значений целых чисел со знаком Формат числа в байтах Диапазон Запись с порядком Обычная запись 1 -27... 27-1 -128 ... 127 2 -215... 215-1 -32768 ... 32767 4 -231... 231-1 -2147483648 ... 2147483647
Cлайд 6
Рассмотрим особенности записи целых чисел со знаком на примере однобайтового формата, при котором для знака отводится один разряд, а для цифр абсолютной величины - семь разрядов. В компьютерной технике применяются три формы записи (кодирования) целых чисел со знаком: прямой код, обратный код, дополнительный код.
Cлайд 7
Положительные числа в прямом, обратном и дополнительном кодах изображаются одинаково - двоичными кодами с цифрой 0 в знаковом разряде. Отрицательные числа в прямом, обратном и дополнительном кодах имеют разное изображение. 1. Прямой код. В знаковый разряд помещается цифра 1, а в разряды цифровой части числа - двоичный код его абсолютной величины
Cлайд 8
2. Обратный код. Получается инвертированием всех цифр двоичного кода абсолютной величины числа, включая разряд знака: нули заменяются единицами, а единицы –нулями. 3. Дополнительный код. Получается образованием обратного кода с последующим прибавлением единицы к его младшему разряду.
Cлайд 9
Формы записи целых положительных чисел имеют одинаковое представление Десятичное представление Двоичное представление Представление в прямом коде Представление в обратном коде Представление дополнительном коде 23 10111 00010111 00010111 00010111 127 1111111 01111111 01111111 01111111 1 1 00000001 00000001 00000001 Число 2310=101112 прямой, обратный и дополнительный код 0 0 0 1 0 1 1 1 «+» Число 12710=11111112 прямой, обратный и дополнительный код 0 1 1 1 1 1 1 1 «+» Число 110=12 прямой, обратный и дополнительный код 0 0 0 0 0 0 0 1 «+»
Cлайд 10
Формы записи целых отрицательных чисел Десятичное представление Двоичное представление Представление в прямом коде Представление в обратном коде Представление дополнительном коде -1 -1 10000001 11111110 11111111 -17 -10001 10010001 11101110 11101111 -127 -1111111 11111111 10000000 10000001 Прямой код числа -17: 1 0 0 1 0 0 0 1 «-» Прямой код числа -127: 1 1 1 1 1 1 1 1 «-» Обратный код числа -17: 1 1 1 0 1 1 1 0 «-» Обратный код числа -127: 1 0 0 0 0 0 0 0 «-» Дополнительныйкод числа -17: 1 1 1 0 1 1 1 1 «-» Дополнительныйкод числа -127: 1 0 0 0 0 0 0 1 «-»
Cлайд 11
Операции над числами с фиксированной точкой.
Cлайд 12
1. А и В положительные. При суммировании складываются все разряды, включая разряд знака. Так как знаковые разряды положительных слагаемых равны нулю, разряд знака суммы тоже равен нулю. Например: Получен правильный результат.
Cлайд 13
2. А положительное, B отрицательное и по абсолютной величине больше, чем А. Например: Получен правильный результат в обратном коде. При переводе в прямой код биты цифровой части результата инвертируются: 1 0000111 = –710.
Cлайд 14
3. А положительное, B отрицательное и по абсолютной величине меньше, чем А. Например: Компьютер исправляет полученный первоначально неправильный результат (6 вместо 7) переносом единицы из знакового разряда в младший разряд суммы!!!
Cлайд 15
4. А и В отрицательные. Например: Полученный первоначально неправильный результат (обратный код числа –1110 вместо обратного кода числа –1010) компьютер исправляет переносом единицы из знакового разряда в младший разряд суммы. При переводе результата в прямой код биты цифровой части числа инвертируются: 1 0001010 = –1010.
Cлайд 16
5. А и В положительные, сумма А+В больше, либо равна 2n–1, где n – количество разрядов формата чисел (для однобайтового формата n=8, 2n–1 = 27 = 128). Например: Семи разрядов цифровой части числового формата недостаточно для размещения восьмиразрядной суммы (16210 = 101000102), поэтому старший разряд суммы оказывается в знаковом разряде. Это вызывает несовпадение знака суммы и знаков слагаемых (знак суммы – отрицателен, знак слагаемых – положительный), что является свидетельством переполнения разрядной сетки.
Cлайд 17
6. А и В отрицательные, сумма абсолютных величин А и В больше, либо равна 2n–1. Например: 632 =01111112 Здесь знак суммы тоже не совпадает со знаками слагаемых, что свидетельствует о переполнении разрядной сетки.
Cлайд 18
1. А и В положительные. Здесь нет отличий от случая 1, рассмотренного для обратного кода, т.к. дополнительный код используется только для отрицательных чисел.
Cлайд 19
2. А положительное, B отрицательное и по абсолютной величине больше, чем А. Например: Получен правильный результат в дополнительном коде. При переводе в прямой код биты цифровой части результата инвертируются и к младшему разряду прибавляется единица: 1 0000110 + 1 = 1 0000111 = –710.
Cлайд 20
3. А положительное, B отрицательное и по абсолютной величине меньше, чем А. Например: Получен правильный результат. Единицу переноса из знакового разряда компьютер отбрасывает.
Cлайд 21
4. А и В отрицательные. Например: Получен правильный результат в дополнительном коде. Единицу переноса из знакового разряда компьютер отбрасывает. Случаи переполнения для дополнительных кодов рассматриваются по аналогии со случаями 5 и 6 для обратных кодов.
Задача. Выполнить действия над машинными кодами чисел: с фиксированной точкой. Формат 16 двоичных разрядов. Дано: А= - 387; В= - 128 Найти: С1=А + В; Решение: X = A+B X = (-A) + ( - B) А(10) = - 387; А(16)=- 183(16)= - 110000011(2) В(10) = - 128; В(16)=- 80(16)= - 10000000(2) A(2) = 1 000000110000011 –прямой код А(2) = 1 111111001111100 –обратный код А(2) = 1 111111001111101 – дополн. код
Cлайд 24
В(2) = 1 000000010000000 – прямой код В(2) = 1 111111101111111 – обратный код В(2) = 1 111111110000000 – дополн.код (-А) = 1 111111001111101 + (-В) = 1 111111110000000 Х = 1 111110111111101 –доп. код Х = 1 000001000000010 – обр.код Х = 1 000001000000011 – пр.код Х = - 203(16) = - (2*16*16+0*16+3*1) = = - (256*2+3) = - (512+3)+ - 515
Cлайд 25
Представление чисел с плавающей точкой. Этот способ представления опирается на нормализованную (экспоненциальную) запись действительных чисел. Нормализованная запись отличного от нуля действительного числа A - это запись вида: А= m* qn, где m – мантисса числа (правильная дробь, у которой первая цифра после запятой не равна нулю), q – основание системы, n – порядок числа.
Cлайд 26
Примеры: 1. Мантисса числа 64.5 – это число 0.645, а порядок – число 2, так как 64.5 = 0.645*10 степень (2). 2. Мантисса числа 0.0000012 – это число 0.12, а порядок – число -5, потому что 0.0000012= =0.12*10 степень(-5). При представлении чисел с плавающей запятой часть разрядов ячейки отводится для записи порядка числа, остальные разряды - для записи мантиссы. По одному разряду в каждой группе отводится для изображения знака порядка и знака мантиссы.