Lektsiya_3-2015_KO.ppt
- Количество слайдов: 62
Представление чисел в компьютерных системах. Лекция 3
ТЕМЫ 1. 2. 3. 4. Кодирование и декодирование информации. Представление чисел в компьютере. Арифметические действия над целыми числами. Арифметические операции над числами с плавающей точкой.
1. Кодирование и декодирование информации
Основные способы передачи информации в социотехнических системах Сигналы Знаки -свет маяка -наскальная роспись -живая музыка, -дорожные знаки -жесты -текст в книге -пение птиц -азбука Морзе Наполнение знаков и сигналов смыслом делает их СИМВОЛАМИ
СИГНАЛЫ Аналоговые (непрерывные) Непрерывно изменяются по амплитуде и во времени телефон, радио, телевидение чаще встречается в жизни Дискретные (цифровые) Принимают конечное число значений текстовая, символьная информация легко обрабатывать
Кодирование и декодирование Для обмена информацией с другими людьми человек использует естественные языки. Наряду с естественными языками были разработаны формальные языки для профессионального применения их в какой-либо сфере. Представление информации с помощью какого-либо языка часто называют кодированием. Код — набор символов (условных обозначений) для представления информации. Код — система условных знаков (символов) для передачи, обработки и хранения информации(со общения). Кодирование — процесс представления информации (сообщения) в виде кода. Все множество символов, используемых для кодирования, называется алфавитом кодирования. Например, в памяти компьютера любая информация кодируется с помощью двоичного алфавита, содержащего всего два символа: 0 и 1. Декодирование- процесс обратного преобразования кода к форме исходной символьной системы, т. е. получение исходного сообщения. Например: перевод с азбуки Морзе в письменный текст на русском языке. В более широком смысле декодирование — это процесс восстановления содержания закодированного сообщения. При таком подходе процесс записи текста с помощью русского алфавита можно рассматривать в качестве кодирования, а его чтение — это декодирование.
Способы кодирования информации Для кодирования одной и той же информации могут быть использованы разные способы; их выбор зависит от ряда обстоятельств: l цели кодирования, l условий, l имеющихся средств. Если надо записать текст в темпе речи — используем стенографию; если надо передать текст за границу — используем английский алфавит; если надо представить текст в виде, понятном для грамотного русского человека, — записываем его по правилам грамматики русского языка. «Здравствуй, Саша!» «Zdravstvuy, Sasha!»
Способы кодирования информации Выбор способа кодирования информации может быть связан с предполагаемым способом ее обработки. Покажем это на примере представления чисел — количественной информации. Используя русский алфавит, можно записать число "тридцать пять". Используя же алфавит арабской десятичной системы счисления, пишем « 35» . Второй способ не только короче первого, но и удобнее для выполнения вычислений. Какая запись удобнее для выполнения расчетов: "тридцать пять умножить на сто двадцать семь" или "35 х 127"? Очевидно — вторая.
Телеграфный аппарат Бодо Равномерный телеграфный код был изобретен французом Жаном Морисом Бодо в конце XIX века. В нем использовалось всего два разных вида сигналов. Не важно, как их назвать: точка и тире, плюс и минус, ноль и единица. Это два отличающихся друг от друга электрических сигнала. Длина кода всех символов одинаковая и равна пяти. В таком случае не возникает проблемы отделения букв друг от друга: каждая пятерка сигналов — это знак текста. Поэтому пропуск не нужен. Код называется равномерным, если длина кода всех символов равна. Код Бодо — это первый в истории техники способ двоичного кодирования, информации. Благодаря этой идее удалось создать буквопечатающий телеграфный аппарат, имеющий вид пишущей машинки. Нажатие на клавишу с определенной буквой вырабатывает соответствующий пятиимпульсный сигнал, который передаетсяпо линии связи. В честь Бодо была названа единица скорости передачи информации — бод. В современных компьютерах для кодирования текста также применяется равномерный двоичный код. Telex Это интересно: Отель, не имеющий телекса, не может иметь рейтинг "пять звезд".
Двоичное кодирование в компьютере Вся информация, которую обрабатывает компьютер должна быть представлена двоичным кодом с помощью двух цифр: 0 и 1. Эти два символа принято называть двоичными цифрами или битами. С помощью двух цифр 0 и 1 можно закодировать любое сообщение. Это явилось причиной того, что в компьютере обязательно должно быть организованно два важных процесса: кодирование и декодирование. Кодирование – преобразование входной информации в форму, воспринимаемую компьютером, т. е. двоичный код. Декодирование – преобразование данных из двоичного кода в форму, понятную человеку. Привет! 1001011
Двоичное кодирование — это кодирование информации при помощи нулей и единиц. Эти знаки называются двоичными цифрами, поанглийски — binary digit или сокращенно bit (бит).
Почему двоичное кодирование С точки зрения технической реализации использование двоичной системы счисления для кодирования информации оказалось намного более простым, чем применение других способов. Действительно, удобно кодировать информацию в виде последовательности нулей и единиц, если представить эти значения как два возможных устойчивых состояния электронного элемента: 0 – отсутствие электрического сигнала; 1 – наличие электрического сигнала. Эти состояния легко различать. Недостаток двоичного кодирования – длинные коды. Но в технике легче иметь дело с большим количеством простых элементов, чем с небольшим числом сложных. Способы кодирования и декодирования информации в компьютере, в первую очередь, зависит от вида информации, а именно, что должно кодироваться: числа, текст, графические изображения или звук.
2. Представление чисел в компьютере.
Для работы с числами человек использует в основном две формы для их записи – естественную и экспоненциальную. Экспоненциальная форма записи чисел используется для обозначения очень больших или очень маленьких чисел. Например 0, 000002=0, 2*10 -5 или 1000=103.
Целые числа. Целые числа без знака (только положительные) Целые числа со знаком (положительные и отрицательные) Для хранения чисел в памяти отводится определённое количество разрядов, в совокупности представляющих собой kразрядную сетку.
Представление целых чисел Ячейка - объем памяти, предоставленный для хранения одного числа. l Память дискретна и адресуема. l Каждое число хранится в определенной ячейке памяти. l Байты памяти нумеруются (адрес ячейки).
Как представляются в компьютере целые числа? Целые числа могут представляться в компьютере со знаком или без знака. Целые числа без знака обычно занимают в памяти один или два байта и принимают в однобайтовом формате значения от 00002 до 11112 , а в двубайтовом формате - от 000000002 до 111111112.
Диапазоны значений целых чисел без знака Формат числа в байтах Диапазон Запись с порядком Обычная запись 1 0. . . 28 -1 0. . . 255 2 0. . . 216 -1 0. . . 65535
Число 3910 = 100111 2 в однобайтовом формате: Число 3910 = 100111 2 в двубайтовом формате: Число 65 53510 = 111111112 в двубайтовом формате:
Целые числа со знаком обычно занимают в памяти компьютера один, два или четыре байта, при этом самый левый (старший) разряд содержит информацию о знаке числа. Знак "плюс" кодируется нулем, а "минус" - единицей. Диапазоны значений целых чисел со знаком Формат числа в байтах Диапазон Запись с порядком Обычная запись 1 -27. . . 27 -1 -128. . . 127 2 -215. . . 215 -1 -32768. . . 32767 4 -231. . . 231 -1 -2147483648. . . 2147483647
Целые числа со знаком. В компьютерной технике применяются три формы записи (кодирования) целых отрицательных чисел: прямой код, обратный код, дополнительный код.
Положительные числа в прямом, обратном и дополнительном кодах изображаются одинаково - двоичными кодами с цифрой 0 в знаковом разряде. Отрицательные числа в прямом, обратном и дополнительном кодах имеют разное изображение. 1. Прямой код. В знаковый разряд помещается цифра 1, а в разряды цифровой части числа - двоичный код его абсолютной величины
2. Обратный код. Получается инвертированием всех цифр двоичного кода абсолютной величины числа, включая разряд знака: нули заменяются единицами, а единицы –нулями. 3. Дополнительный код. Получается образованием обратного кода с последующим прибавлением единицы к его младшему разряду.
Прямой код числа. В знаковый разряд помещается цифра 1, а в разряды цифровой части – двоичный код его абсолютной величины. Пример Прямой код числа -1: 1 0 0 Знак числа «-» 0 0 1
Обратный код числа. Получается инвертированием всех цифр двоичного кода абсолютной величины числа, включая разряд знака: нули заменяются единицами, а единицы – нулями. Пример Число: -1. Код модуля числа: 0 0000001. Обратный код числа: 1 1111110. 1 1 1 1 0
Дополнительный код числа. Получается образованием обратного кода с последующем прибавлением единицы к его младшему разряду. Пример Число: -1. Код модуля числа: 0 0000001. Обратный код числа: 1 1111110 +1 1 1111111 1 1 1 1
Представление целых отрицательных чисел Отрицательные числа в памяти компьютера записываются с помощью дополнительного кода. l Записать представление положительного числа. l Инвертировать код. l К инвертированному числу прибавить 1. l ПРОВЕРИТЬ: при сложении с положительным числом получаем 0.
Формы записи целых положительных чисел Десятичное представление Двоичное Представление в представление прямом коде Представление в обратном коде Представление дополнительном коде 23 127 1 10111 1111111 1 00010111 01111111 00000001 имеют одинаковое представление Число 2310=101112 Число 12710=11111112 прямой, обратный и дополнительный код 0 0 0 1 1 прямой, обратный и дополнительный код 1 0 1 1 1 1 «+» Число 110=12 прямой, обратный и дополнительный код 0 «+» 0 0 0 1
Формы записи целых отрицательных чисел Десятичное представление Двоичное представление Представление в прямом коде Представление в обратном коде дополнительном коде -1 -1 10000001 11111110 1111 -17 -10001 10010001 11101111 -127 -1111111 10000000 10000001 Прямой код числа -17: 1 0 0 0 1 Прямой код числа -127: 1 1 1 1 «-» Обратный код числа -17: Обратный код числа -127: 1 1 1 0 1 0 0 0 0 «-» Дополнительный код числа -17: 1 «-» 1 1 0 1 1 Дополнительный код числа -127: 1 «-» 0 0 0 1
3. Арифметические действия над целыми числами.
1. Сложение 0+0=0 0+1=1 1+0=1 1+1=10 1 + 1 = ? 10011 1101+110 = 1 1 + 1 = 10 1 10 + 1 = 11 +10 1 1 0 + 1 10 0 1 1 11 _______
1011101+1100110 = 11000011 1 1 0 1 + 1 1 0 0 1 1 0 11 0 01 1
2. Умножение. 0=0 0 . 1=0 0 . 0=0 1 . 1=1 1 . 101= 11110 1 1 0 х 1 0 1 1 1 0 + 0 0 0 1 1 1 1 0
3. Вычитание 100000 -11=11101 Решение: В большинстве компьютеров операция вычитание не используется. Вместо неё производится сложение уменьшаемого с обратным или дополнительным кодом вычитаемого. Это позволяет существенно упростить конструкцию АЛУ.
4. Деление выполняется по правилам математики, не забывая, что мы выполняем действия в двоичной системе счисления. 101010: 111=110 Решение: Любые машинные вычисления содержат погрешность. Поэтому корень из числа 4 вполне может быть равен 1, 997
Операции над числами с фиксированной точкой.
1. А и В положительные. При суммировании складываются все разряды, включая разряд знака. Так как знаковые разряды положительных слагаемых равны нулю, разряд знака суммы тоже равен нулю. Например: Получен правильный результат.
2. А положительное, B отрицательное и по абсолютной величине больше, чем А. Например: Получен правильный результат в обратном коде. При переводе в прямой код биты цифровой части результата инвертируются: 1 0000111 = – 710.
3. А положительное, B отрицательное и по абсолютной величине меньше, чем А. Например: Компьютер исправляет полученный первоначально неправильный результат (6 вместо 7) переносом единицы из знакового разряда в младший разряд суммы!!!
4. А и В отрицательные. Например: Полученный первоначально неправильный результат (обратный код числа – 1110 вместо обратного кода числа – 1010) компьютер исправляет переносом единицы из знакового разряда в младший разряд суммы. При переводе результата в прямой код биты цифровой части числа инвертируются: 1 0001010 = – 1010.
5. А и В положительные, сумма А+В больше, либо равна 2 n– 1, где n – количество разрядов формата чисел (для однобайтового формата n=8, 2 n– 1 = 27 = 128). Например: Семи разрядов цифровой части числового формата недостаточно для размещения восьмиразрядной суммы (16210 = 101000102), поэтому старший разряд суммы оказывается в знаковом разряде. Это вызывает несовпадение знака суммы и знаков слагаемых (знак суммы – отрицателен, знак слагаемых – положительный), что является свидетельством переполнения разрядной сетки.
6. А и В отрицательные, сумма абсолютных величин А и В больше, либо равна 2 n– 1. Например: 632 =01111112 Здесь знак суммы тоже не совпадает со знаками слагаемых, что свидетельствует о переполнении разрядной сетки.
1. А и В положительные. Здесь нет отличий от случая 1, рассмотренного для обратного кода, т. к. дополнительный код используется только для отрицательных чисел.
2. А положительное, B отрицательное и по абсолютной величине больше, чем А. Например: Получен правильный результат в дополнительном коде. При переводе в прямой код биты цифровой части результата инвертируются и к младшему разряду прибавляется единица: 1 0000110 + 1 = 1 0000111 = – 710.
3. А положительное, B отрицательное и по абсолютной величине меньше, чем А. Например: Получен правильный результат. Единицу переноса из знакового разряда компьютер отбрасывает.
4. А и В отрицательные. Например: Получен правильный результат в дополнительном коде. Единицу переноса из знакового разряда компьютер отбрасывает. Случаи переполнения для дополнительных кодов рассматриваются по аналогии со случаями 5 и 6 для обратных кодов.
Что такое переполнение? l l Выход результатов вычислений за границы допустимого диапазона называется переполнением. Переполнение приводит к ошибкам при автоматических расчетах или остановке выполнения программы. Программист должен правильно определять тип данных (диапазон чисел).
4. Арифметические операции над числами с плавающей точкой.
Представление чисел с плавающей точкой. Этот способ представления опирается на нормализованную (экспоненциальную) запись действительных чисел. Нормализованная запись отличного от нуля действительного числа A - это запись вида: А= m* qn, где m – мантисса числа (правильная дробь, у которой первая цифра после запятой не равна нулю), q – основание системы, n – порядок числа.
Например, число 25, 324 можно записать в таком виде: 0. 25324 х102. Здесь m=0. 25324 — мантисса, n=2 — порядок. Порядок указывает, на какое количество позиций и в каком направлении должна «переплыть» , т. е. сместиться десятичная точка в мантиссе. Отсюда название «плавающая точка» . Однако справедливы и следующие равенства: 25, 324 = 2, 5324*101 = 0, 0025324*104 = 2532, 4*102 и т. п.
Получается, что представление числа в форме с плавающей точкой неоднозначно? Чтобы не было неоднозначности, в ЭВМ используют нормализованное представление числа в форме с плавающей точкой. Мантисса в нормализованном представлении должна удовлетворять условию: 0, 1 p ≤ m < 1 p.
Иначе говоря, мантисса меньше единицы и первая значащая цифра — не ноль. Значит для рассмотренного числа нормализованным представлением будет: 25, 324=0. 25324 * 102.
Для представления вещественных чисел (конечных и бесконечных десятичных дробей) используют формат с плавающей точкой (запятой). Форма с плавающей точкой использует представление вещественного числа R в виде произведения мантиссы m на основание системы счисления р в некоторой целой степени n, которую называют порядком: R = m * рn m – мантисса, n – порядок, p – основание системы.
Пусть в памяти компьютера вещественное число представляется в форме с плавающей точкой в двоичной системе счисления (р=2) и занимает ячейку размером 4 байта. В ячейке должна содержаться следующая информация о числе: знак числа, порядок и значащие цифры мантиссы. Вот как эта информация располагается в ячейке: ±машинный порядок М А Н Т И С С А 1 -й байт 2 -й байт 3 -й байт 4 -й байт В старшем бите 1 -го байта хранится знак числа. В этом разряде 0 обозначает плюс, 1 — минус. Оставшиеся 7 бит первого байта содержат машинный порядок. В следующих трех байтах хранятся значащие цифры мантиссы.
Что такое машинный порядок? В семи двоичных разрядах помещаются двоичные числа в диапазоне от 0000000 до 1111111. В десятичной системе это соответствует диапазону от 0 до 127. Всего 128 значений. Знак порядка в ячейке не хранится. Но порядок, очевидно, может быть как положительным так и отрицательным. Разумно эти 128 значений разделить поровну между положительными и отрицательными значениями порядка. В таком случае между машинным порядком и истинным (назовем его математическим) устанавливается следующее соответствие: Машинный порядок 0 1 2 3 . . . 64 65 . . . 125 126 127 Математический порядок -64 -63 -62 -61 . . . 0 1 . . . 61 62 63 Если обозначить машинный порядок Мр, а математический — р, то связь между ними выразится такой формулой: Мр = р + 64.
Итак, машинный порядок смещён относительно математического на 64 единицы и имеет только положительные значения. При выполнении вычислений с плавающей точкой процессор это смещение учитывает. l В двоичной системе счисления смещение: Мр2 = р2+100 00002 l
Теперь мы можем записать внутреннее представление числа 25, 324 в форме с плавающей точкой. 1)Переведем его в двоичную систему счисления с 24 значащими цифрами. l 25, 32410= 11001, 01010010111100011012 2)Запишем в форме нормализованного двоичного числа с плавающей точкой: l 0, 110010101001011110001101*10101 Здесь мантисса, основание системы счисления (210=102) и порядок (510=1012)записаны в двоичной системе. 3) Вычислим машинный порядок. Мр2 = 101 + 100 0000 = 100 0101. 4) Запишем представление числа в ячейке памяти. 31 порядок мантисса 0 0 1 0 1 1 1 0 0 1 0 1 0 1 1 0 0 0 1 1 0 1 Знак числа
Число в форме с плавающей точкой занимает в памяти компьютера 4 байта (число обычной точности) или 8 байт (число двойной точности). Мы рассмотрели пример представления числа 25, 324 обычной точности
Для того, чтобы получить внутреннее представление отрицательного числа -25, 324, достаточно в полученном выше коде заменить в разряде знака числа 0 на 1. 1 1 0 0 0 1 1 1 0 0 1 0 1 0 1 1 0 0 0 1 1 0 1
Задание. Представьте двоичное число -100, 12 в четырёхбайтовом формате. Представьте число сначала в форме с плавающей запятой.
Решение. -100, 12= -0, 1001*211 Мантисса -0, 1001 Порядок 11 Машинный порядок 11+100 0000=100011. 1 1 0 0 1 1 1 0 0 0 0 0 0


