Представление чисел в ЭВМ
2 Способы представления чисел целые положительные числа (без знака) целые со знаком вещественные нормализованные числа.
3 Целые числа без знака Формат числа в байтах Диапазон Запись с порядком Обычная запись – – Целые числа без знака обычно занимают в памяти один или два байта и принимают: в однобайтовом формате значения от до , в двубайтовом формате от до Диапазоны значений целых чисел без знака
4 Целые числа со знаком Формат числа в байтахДиапазон Запись с порядкомОбычная запись – – … Целые числа со знаком обычно занимают в памяти компьютера один, два или четыре байта, при этом самый левый (старший) разряд содержит информацию о знаке числа. Знак плюс кодируется нулем, а минус единицей. Диапазоны значений целых чисел без знака
5 Пример = a) однобайтовый формат б) двубайтовый формат б) число в двубайтовом формате Номера разрядов Биты числа
6 Дополнительный код Целые числа со знаком Прямой код Обратный код Положительные числа в прямом, обратном и дополнительном кодах изображаются одинаково - двоичными кодами с цифрой 0 в знаковом разряде
7 Прямой код Прямой код числа: 1 Прямой код числа: -127 n-разрядность кода, a зн - значение знакового разряда. Знак Число Пример: если разрядность кода равна 4, то 1101 = (-1) 1 [1x2 0 +0x2 1 +1x2 2 ]= В знаковый разряд помещается цифра знака, а в разряды цифровой части числа двоичный код его абсолютной величины.
8 Обратный код Получается инвертированием всех цифр двоичного кода абсолютной величины числа, включая разряд знака: нули заменяются единицами, а единицы нулями. n-разрядность машинного слова, a зн =0 для положительных чисел, a зн =1 для отрицательных чисел = 1*( )+[0x2 0 +1x2 1 +0x2 2 ] = -7+2=-5 Пример: число: -1, модуль , обратный код число: -127, модуль , обратный код
9 Дополнительный код Получается образованием обратного кода с последующим прибавлением единицы к его младшему разряду Обычно отрицательные десятичные числа при вводе в машину автоматически преобразуются в обратный или дополнительный двоичный код и в таком виде хранятся, перемещаются и участвуют в операциях. При выводе таких чисел из машины происходит обратное преобразование в отрицательные десятичные числа Дополнительный код числа: -1 Дополнительный код числа: число: -1 = обратный код число: -127 = обратный код
10 алгоритм перевода отрицательных чисел в положительные I вариант. Переписать исходную последовательность битов числа справа налево до первой единицы, включая ее. Остальные биты инвертировать = = II вариант. Дополнительный код=логическое дополнение (все биты инвертированы) = = Число + его дополнительный код =0 Дополнительный код
11 Дополнительный код Представление в двоичном дополнительном коде в случае 3-битного кодирования чисел: Набор битовЗначение
12 Дополнительный код Для дополнительного кода справедливо следующее соотношение: где n-разрядность машинного слова, a зн =0 для положительных чисел, a зн =1 для отрицательных чисел. Пример: 1101 = 1*(-2 3 )+[1x2 0 +1x2 1 +0x2 2 ]=-8+3=-5
13 Операции над целыми числами Сложение. Вычитание. В большинстве случаев операция вычитания не используется, вместо нее производится сложение обратных или дополнительных кодов уменьшаемого и вычитаемого. Умножение Целочисленное деление и нахождение остатка от деления
14 Сложение обратных кодов При сложении чисел А и В имеют место : 1.А и В положительные. 2. А положительное, B отрицательное и по абсолютной величине больше, чем А.
15 Сложение обратных кодов 3. А положительное, B отрицательное и по абсолютной величине меньше, чем А. 4. А и В отрицательные.
16 Сложение обратных кодов При сложении может возникнуть ситуация, когда старшие разряды результата операции не помещаются в отведенной для него области памяти. Такая ситуация называется переполнением разрядной сетки формата числа. Случай переполнения возможен и для обратных и для дополнительных кодов.
17 Сложение дополнительных кодов 1. А и В положительные. Нет отличий. 2. А положительное, B отрицательное и по абсолютной величине больше, чем А. 3. А положительное, B отрицательное и по абсолютной величине меньше, чем А.
18 Сложение дополнительных кодов 4. А и В отрицательные. на преобразование отрицательного числа в обратный код затрачивается меньше времени, чем на преобразование в дополнительный код; время выполнения сложения для дополнительных кодов чисел меньше, чем для их обратных кодов, потому что в таком сложении нет переноса единицы из знакового разряда в младший разряд результата.
19 Формы представления чисел С фиксированной точкой С плавающей точкой
20 Преобразование чисел из естественной формы в нормализованную Число больше 1. Перемещение разделителя по числу влево до тех пор, пока не исчезнет целая часть. Нормализация влево. N N [1234,56]= *10 4 N [23,4*10 6 ]=0.234*10 7 Число меньше 1. Перемещение разделителя по числу вправо до тех пор, пока первая цифра после разделителя не станет ненулевой. Нормализация вправо. N N [0.0003]=0.3*10 -3
21 Вещественные числа Для удобства отображения чисел, принимающих значения из достаточно широкого диапазона, используется форма записи чисел с порядком основания системы счисления. Например: 1.25*10 0 = 0.125*10 1 = *10 2 =..., или: 12.5*10 –1 = 125.0*10 –2 = *10 –3 =.... Любое число N в системе счисления с основанием q можно записать в виде N = M * q p, где M называется мантиссой числа, а p порядком. Такой способ записи чисел называется представлением с плавающей точкой.
22 Вещественные числа Мантисса должна быть правильной дробью, первая цифра которой отлична от нуля: M из [0.1, 1). Такое, наиболее выгодное для компьютера, представление вещественных чисел называется нормализованным. Мантиссу и порядок q-ичного числа принято записывать в системе с основанием q, а само основание в десятичной системе.
23 Примеры нормализованного представления вещественного числа Десятичная система = * = -0.34*10 -4 Двоичная система = *2 11 (порядок 11 2 = 3 10 ) = 0.11* (порядок = )
24 Формат представления вещественных чисел При хранении числа с плавающей точкой отводятся разряды для мантиссы, порядка, знака числа и знака порядка: 1.Чем больше разрядов отводится под запись мантиссы, тем выше точность представления числа. 2.Чем больше разрядов занимает порядок, тем шире диапазон от наименьшего отличного от нуля числа до наибольшего числа, представимого в машине при заданном формате. ….. Знак числа Знак порядка ПорядокМантисса
25 Пример записи чисел в нормализованном виде в четырехбайтовом формате с семью разрядами для записи порядка … Число = = 0, Знак числа Знак порядка ПорядокМантисса
26 Пример записи чисел в нормализованном виде в четырехбайтовом формате с семью разрядами для записи порядка …..000 Знак числа Знак порядка ПорядокМантисса Число – = – = –0.1*2 –10 (отрицательный порядок записывается в дополнительном коде)
27 Характеристики форматов вещественных чисел Форматы вещественных чисел Размер в байтах Примерный диапазон абсолютных значений Количество значащих десятичных цифр Одинарный410 –45 … или 8 Вещественный610 –39 … или 12 Двойной810 –324 … или 16 Расширенный1010 –4932 … или 20 Форма представления чисел с плавающей точкой позволяет записывать числа с высокой точностью и из весьма широкого диапазона.
28 Арифметические операции с вещественными числами 1. Сложение. a) Δk=|k 1 -k 2 | b) если k1>k2, то k=k 1 иначе k=k 2 с) если
29 Арифметические операции с вещественными числами 1.Сложение. Пример. Сложить двоичные нормализованные числа и Разность порядков слагаемых здесь равна трем, поэтому перед сложением мантисса первого числа сдвигается на три разряда вправо:
30 Арифметические операции с вещественными числами Пример. X1= * 10 1, X2= *10 2. Пусть под запись мантиссы отводится 5 разрядов. 1.Δk=1, k нормализуя, получим мантиссу 0,10333 (теряем 2) и порядок увеличиваем на 1. Ответ: X=0,10333*10 3 = 103,3324.
31 Представление текстовой информации. ЭВМ первых двух поколений могли обрабатывать только числовую информацию, полностью оправдывая свое название вычислительных машин. Лишь переход к третьему поколению принес изменения: к этому времени уже назрела настоятельная необходимость использования текстов. С точки зрения ЭВМ текст состоит из отдельных символов. К числу символов принадлежат не только буквы (заглавные или строчные, латинские или русские), но и цифры, знаки препинания, спецсимволы типа "=", "(", "&" и т.п. и даже (обратите особое внимание!) пробелы между словами. Да, не удивляйтесь: пустое место в тексте тоже должно иметь свое обозначение. Каждый символ хранится в виде двоичного кода, который является номером символа. Можно сказать, что компьютер имеет собственный алфавит, где весь набор символов строго упорядочен. Количество символов в алфавите также тесно связано с двоичным представлением и у всех ЭВМ равняется 256. Иными словами, каждый символ всегда кодируется 8 битами, т.е. занимает ровно один байт.
32 Представление текстовой информации. Как видите, хранится не начертание буквы, а ее номер. Именно по этому номеру воспроизводится вид символа на экране дисплея или на бумаге. Поскольку алфавиты в различных типах ЭВМ не полностью совпадают, при переносе с одной модели на другую может произойти превращение разумного текста в "абракадабру". Такой эффект иногда получается даже на одной машине в различных программных средах: например, русский текст, набранный в MS DOS, нельзя без специального преобразования прочитать в Windows. Остается утешать себя тем, что задача перекодировки текста из одной кодовой таблицы в другую довольно проста и при наличии программ машина сама великолепно с ней справляется. Наиболее стабильное положение в алфавитах всех ЭВМ занимают латинские буквы, цифры и некоторые специальные знаки. Это связано с существованием международного стандарта ASCII (American Standard Code for Information Interchange - Американский стандартный код для обмена информацией). Русские же буквы не стандартизированы и могут иметь различную кодировку.
33 Представление текстовой информации. Нельзя также пройти мимо еще одного интересного факта: каждый символ текста имеет свой числовой код, но не каждому коду соответствует отображаемый на экране символ. Речь идет о существовании так называемых управляющих кодов, величина которых меньше шестнадцатиричного числа 20 (т.е. 32 в десятичной системе счисления). При получении этих кодов внешние устройства не изображают какого-либо символа, а выполняют те или иные управляющие действия. Так, код 07 вызывает подачу стандартного звукового сигнала, а код 0C - очистку экрана. Особую роль играют коды 0A (перевод строки, обозначаемый часто LF) и 0D (возврат каретки - CR). Первый вызывает перемещение в следующую строку без изменения позиции, а второй - на начало текущей строки. Таким образом, для перехода на начало новой строки требуются оба кода и в любом тексте эта "неразлучная пара" кодов хранится после каждой строки. Обратим внимание читателя на то, что названия возврат каретки и перевод строки имеют историческое происхождение и связаны с устройством пишущей машинки.