Способы представления чисел в компьютере. Представление целых чисел

Представление чисел

Числа в математике

Число-важнейшее понятие математики, которое складывалось и развивалось в течение длительного периода истории человечества. Люди начали работать с числами еще с первобытных времен. Первоначально человек оперировал лишь целыми положительными числами, которые называются натуральными числами: 1, 2, 3, 4, … Долго существовало мнение о том, что есть самое большое число, “боле сего несть человеческому уму разумевати” (так писали в старославянских математических трактатах).

Развитие математической науки привело к выводу, что самого большого числа нет. С математической точки зрения ряд натуральных чисел бесконечен, т.е. неограничен. С появлением в математике понятия отрицательного числа (Р.Декарт, XVII век в Европе; в Индии значительно раньше) оказалось, что множество целых чисел неограниченно как “слева”, так и “справа”. Математическое множество целых чисел дискретно и неограниченно (бесконечно).

Понятие вещественного (или действительного) числа в математику ввел Исаак Ньютон в XVIII веке. С математической точки зрения множество вещественных чисел бесконечно и непрерывно . Оно включает в себя множество целых чисел и еще бесконечное множество нецелых чисел. Между двумя любыми точками на числовой оси лежит бесконечное множество вещественных чисел. С понятием вещественного числа связано представление о непрерывной числовой оси, любой точке которой соответствует вещественное число.

Представление целых чисел

В памяти компьютера числа хранятся в двоичной системе счисления (см. “Системы счисления ” 2). Есть две формы представления целых чисел в компьютере: целые без знака и целые со знаком.

Целые без знака - это множество положительных чисел в диапазоне , где k - это разрядность ячейки памяти, выделяемой под число. Например, если под целое число выделяется ячейка памяти размером в 16 разрядов (2 байта), то самое большое число будет таким:

В десятичной системе счисления это соответствует: 2 16 – 1 = 65 535

Если во всех разрядах ячейки нули, то это будет ноль. Таким образом, в 16-разрядной ячейке помещается 2 16 = 65 536 целых чисел.

Целые числа со знаком - это множество положительных и отрицательных чисел в диапазоне [–2 k –1 , 2 k –1 – 1]. Например, при k = 16 диапазон представления целых чисел: [–32 768, 32 767]. Старший разряд ячейки памяти хранит знак числа: 0 - число положительное, 1 - число отрицательное. Самое большое положительное число 32 767 имеет следующее представление:



Например, десятичное число 255 после перевода в двоичную систему счисления и вписывания в 16-разрядную ячейку памяти будет иметь следующее внутреннее представление:

Отрицательные целые числа представляются в дополнительном коде. Дополнительный код положительного числа N - это такое его двоичное представление, которое при сложении с кодом числа N дает значение 2 k . Здесь k - количество разрядов в ячейке памяти. Например, дополнительный код числа 255 будет следующим:

Это и есть представление отрицательного числа –255. Сложим коды чисел 255 и –255:

Единичка в старшем разряде “выпала” из ячейки, поэтому сумма получилась равной нулю. Но так и должно быть: N + (–N ) = 0. Процессор компьютера операцию вычитания выполняет как сложение с дополнительным кодом вычитаемого числа. При этом переполнение ячейки (выход за предельные значения) не вызывает прерывания выполнения программы. Это обстоятельство программист обязан знать и учитывать!

Формат представления вещественных чисел в компьютере называется форматом с плавающей точкой . Вещественное число R представляется в виде произведения мантиссы m на основание системы счисления n в некоторой целой степени p , которую называют порядком: R = m * n p .

Представление числа в форме с плавающей точкой неоднозначно. Например, для десятичного числа 25,324 справедливы следующие равенства:

25,324 = 2,5324 * 10 1 = 0,0025324 * 10 4 = 2532,4 * 10 –2 и т.п.

Чтобы не было неоднозначности, договорились в ЭВМ использовать нормализованное представление числа в форме с плавающей точкой. Мантисса в нормализованном представлении должна удовлетворять условию: 0,1 n m < 1 n . Иначе говоря, мантисса меньше единицы и первая значащая цифра - не ноль. В некоторых случаях условие нормализации принимают следующим: 1 n m < 10 n .

В памяти компьютера мантисса представляется как целое число, содержащее только значащие цифры (0 целых и запятая не хранятся). Следовательно, внутреннее представление вещественного числа сводится к представлению пары целых чисел: мантиссы и порядка.

В разных типах компьютеров применяются различные варианты представления чисел в форме с плавающей точкой. Рассмотрим один из вариантов внутреннего представления вещественного числа в четырехбайтовой ячейке памяти.

В ячейке должна содержаться следующая информация о числе: знак числа, порядок и значащие цифры мантиссы.

В старшем бите 1-го байта хранится знак числа: 0 обозначает плюс, 1 - минус. Оставшиеся 7 бит первого байта содержат машинный порядок . В следующих трех байтах хранятся значащие цифры мантиссы (24 разряда).

В семи двоичных разрядах помещаются двоичные числа в диапазоне от 0000000 до 1111111. Значит, машинный порядок изменяется в диапазоне от 0 до 127 (в десятичной системе счисления). Всего 128 значений. Порядок, очевидно, может быть как положительным, так и отрицательным. Разумно эти 128 значений разделить поровну между положительными и отрицательными значениями порядка: от –64 до 63.

Машинный порядок смещен относительно математического и имеет только положительные значения. Смещение выбирается так, чтобы минимальному математическому значению порядка соответствовал ноль.

Связь между машинным порядком (Mp) и математическим (p) в рассматриваемом случае выражается формулой: Mp = p + 64.

Полученная формула записана в десятичной системе. В двоичной системе формула имеет вид: Mp 2 = p 2 + 100 0000 2 .

Для записи внутреннего представления вещественного числа необходимо:

1) перевести модуль данного числа в двоичную систему счисления с 24 значащими цифрами,

2) нормализовать двоичное число,

3) найти машинный порядок в двоичной системе счисления,

4) учитывая знак числа, выписать его представление в четырехбайтовом машинном слове.

Пример. Записать внутреннее представление числа 250,1875 в форме с плавающей точкой.

Решение

1. Переведем его в двоичную систему счисления с 24 значащими цифрами:

250,1875 10 = 11111010,0011000000000000 2 .

2. Запишем в форме нормализованного двоичного числа с плавающей точкой:

0,111110100011000000000000 Ч 10 2 1000 .

Здесь мантисса, основание системы счисления
(2 10 = 10 2) и порядок (8 10 = 1000 2) записаны в двоичной системе.

3. Вычислим машинный порядок в двоичной системе счисления:

Mp 2 = 1000 + 100 0000 = 100 1000.

4. Запишем представление числа в четырехбайтовой ячейке памяти с учетом знака числа

Шестнадцатеричная форма: 48FA3000.

Диапазон вещественных чисел значительно шире диапазона целых чисел. Положительные и отрицательные числа расположены симметрично относительно нуля. Следовательно, максимальное и минимальное числа равны между собой по модулю.

Наименьшее по абсолютной величине число равно нулю. Наибольшее по абсолютной величине число в форме с плавающей точкой - это число с самой большой мантиссой и самым большим порядком.

Для четырехбайтового машинного слова таким числом будет:

0,111111111111111111111111 · 10 2 1111111 .

После перевода в десятичную систему счисления получим:

MAX = (1 – 2 –24) · 2 63 10 19 .

Если при вычислениях с вещественными числами результат выходит за пределы допустимого диапазона, то выполнение программы прерывается. Такое происходит, например, при делении на ноль, или на очень маленькое число, близкое к нулю.

Вещественные числа, разрядность мантиссы которых превышает число разрядов, выделенных под мантиссу в ячейке памяти, представляются в компьютере приближенно (с “обрезанной” мантиссой). Например, рациональное десятичное число 0,1 в компьютере будет представлено приближенно (округленно), поскольку в двоичной системе счисления его мантисса имеет бесконечное число цифр. Следствием такой приближенности является погрешность машинных вычислений с вещественными числами.

Вычисления с вещественными числами компьютер выполняет приближенно. Погрешность таких вычислений называют погрешностью машинных округлений .

Множество вещественных чисел, точно представимых в памяти компьютера в форме с плавающей точкой, является ограниченным и дискретным . Дискретность является следствием ограниченного числа разрядов мантиссы, о чем говорилось выше.

Количество вещественных чисел, точно представимых в памяти компьютера, можно вычислить по формуле : N = 2 t · (U L + 1) + 1. Здесь t - количество двоичных разрядов мантиссы; U - максимальное значение математического порядка; L - минимальное значение порядка. Для рассмотренного выше варианта представления (t = 24, U = 63,
L
= –64) получается: N = 2 146 683 548.

Пример 1. Получить внутреннее представление в формате “со знаком” целого числа 1607 в двухбайтовой ячейке памяти.

Решение

1) Перевести число в двоичную систему счисления: 1607 10 = 11001000111 2 .

2) Дописывая слева нули до 16 разрядов, получим внутреннее представление этого числа в ячейке:

Желательно показать, как для сжатой формы записи этого кода используется шестнадцатеричная форма, которая получается заменой каждой четверки двоичных цифр одной шестнадцатеричной цифрой: 0647 (см. “Системы счисления ” 2).

Более сложной является задача получения внутреннего представления отрицательного целого числа (–N ) - дополнительного кода. Нужно показать ученикам алгоритм этой процедуры:

1) получить внутреннее представление положительного числа N ;

2) получить обратный код этого числа заменой 0 на 1 и 1 на 0;

3) к полученному числу прибавить 1.

Пример 2. Получить внутреннее представление целого отрицательного числа –1607 в двухбайтовой ячейке памяти.

Решение

Полезно показать ученикам, как выглядит внутреннее представление самого маленького отрицательного числа. В двухбайтовой ячейке это –32 768.

1) легко перевести число 32 768 в двоичную систему счисления, поскольку 32 768 = 2 15 . Следовательно, в двоичной системе это:

2) запишем обратный код:

3) прибавим единицу к этому двоичному числу, получим

Единичка в первом бите обозначает знак “минус”. Не нужно думать, что полученный код - это минус ноль. Это –32 768 в форме дополнительного кода. Таковы правила машинного представления целых чисел.

Показав этот пример, предложите ученикам самостоятельно доказать, что при сложении кодов чисел 32 767 + (–32 768) получится код числа –1.

Инструкция

Если в виде дроби надо представить целое число , то используйте в качестве знаменателя единицу, а исходное значение ставьте в числитель. Такая форма записи называться неправильной обыкновенной дробью, так как модуль ее числителя больше модуля знаменателя. Например, число 74 можно записать, как 74/1, а число -12 - как -12/1. При необходимости вы можете числитель и знаменатель в одинаковое количество раз - значение дроби в этом случае по-прежнему будет соответствовать исходному числу. Например, 74=74/1=222/3 или -12=-12/1=-84/7.

Если исходное число представлено в формате десятичной дроби , то его целую часть оставьте без изменений, а разделительную запятую замените пробелом. Дробную часть поставьте в числитель, а в качестве знаменателя используйте десятку, возведенную в степень с показателем, равным количеству знаков в дробной исходного числа. Полученную в результате дробную часть можно сократить, разделив числитель и знаменатель на одинаковое число . Например, десятичной дроби 7,625 будет соответствовать обыкновенная дробь 7 625/1000, которая после сокращения примет значение 7 5/8. Такая форма записи обыкновенной дроби смешанной. При необходимости ее можно привести к неправильному обыкновенному виду, умножив целую часть на знаменатель и прибавив результат к числителю: 7,625 = 7 625/1000 = 7 5/8 = 61/8.

Если исходная десятичная дробь является и периодической, то используйте, например, систему уравнений для вычисления ее эквивалента в формате дроби обыкновенной. Скажем, если исходная дробь равна 3,5(3), то можно тождество: 100*x-10*x=100*3,5(3)-10*3,5(3). Из него можно вывести равенство 90*x=318, а , что искомая дробь будет равна 318/90, что после сокращения даст обыкновенную дробь 3 24/45.

Источники:

  • Можно Ли Число 450 000 Представить Как Произведение 2 Чисел?

В быту чаще всего встречаются не натуральные числа: 1, 2, 3, 4 и т.д. (5 кг. картофеля), а дробные, нецелые числа (5,4 кг лука). Большинство из них представлены в виде десятичных дробей. Но десятичную дробь представить в виде дроби достаточно просто.

Инструкция

Например, дано число "0,12". Если не эту дробь и представить ее так, как есть, то выглядеть она будет так: 12/100 ("двенадцать "). Чтобы избавиться от сотни в , нужно и числитель, и знаменатель поделить на число, которое делит их числа. Это число 4. Тогда, поделив числитель и знаменатель, получается число: 3/25.

Если рассматривать более бытовую , то часто на ценнике у видно, что вес его составляет, к примеру, 0,478 кг или пр. Такое число тоже легко представить в виде дроби :
478/1000 = 239/500. Дробь эта достаточно некрасивая, и если бы была возможность, то эту десятичную дробь можно было бы сокращать и далее. И все тем же методом: подбора числа, которое делит как числитель, так и знаменатель. Это число наибольшим общим множителем. "Наибольшим" множитель потому, что гораздо удобнее и числитель, и знаменатель сразу поделить на 4 (как в первом примере), чем делить дважды на 2.

Видео по теме

Десятичная дробь - разновидность дроби , у которой в знаменателе есть "круглое" число: 10, 100, 1000 и т.д., Например, дробь 5/10 имеет десятичную запись 0,5. Исходя из этого принципа, дробь можно представить в виде десятичной дроби .

Инструкция

Мы живем в цифровом мире. Если раньше главные ценности представляли земля, деньги или средства производства, теперь все решают технологии и информация. Каждый человек, желающий добиться успеха, просто обязан понимать любые числа, в каком бы виде они не были представлены. Кроме обычной десятичной формы записи различают множество других удобных способов представления чисел (в условиях конкретных задач). Рассмотрим наиболее распространенные из них.

Вам понадобится

  • Калькулятор

Инструкция

Для представления десятичного числа в виде обыкновенной дроби нужно сначала посмотреть, каким оно является - или вещественным. Целое число не имеет запятой вовсе, или после запятой стоит ноль (или много нулей, что одно и тоже). Если же после запятой есть некоторые числа, то данное число относится к вещественным. Целое число очень легко представить в виде дроби: в числитель идет само число , а в знаменатель - . С десятичной почти так же, только будем умножать обе часть дроби на десять до тех пор, пока не избавимся от запятой в числителе.

Общие сведения.

Тип данных - это двоичный код, обладающий извест-ными свойствами согласно принятым соглашениям. Процессор (с помощью ко-манд) распознает тип данных и осуществляет над данными предписанный набор операций.

Ниже рассматриваются следующие типы данных:

● знаковые и беззнаковые целые , используемые для представления целых чи-сел в виде двоичных кодов и выполнения над ними арифметических операций по правилам двоичной арифметики;

двоично–десятичные целые , предназначенные для представления и обработки десятичных чисел;

булев тип данных , поддерживающий правила алгебры–логики (булевой алгебры);

типы с фиксированной и плавающей точкой , предназначенные для представ-ления и обработки вещественных чисел.

Выбор типа данных определяется командой программы. Например, при вы-полнении арифметической команды данные трактуются как целые числа, операн-ды в логической операции принимаются как булев тип данных, а 16–битный указа-тель используется командой для доступа к данным в текущем сегменте.

Отметим, что в программах на языках высокого уровня могут существовать типы данных, для которых в процессоре не предусмотрены аппаратные средства. Примером могут служить типы данных с плавающей точкой в программе на Форт-ране, которая выполняется в вычислительной системе без сопроцессора. В этом случае при вычислениях используются дополнительные команды для моделиро-вания типов данных с плавающей точкой. Естественно, при наличии в системе со-процессора (и компилятора Фортрана для него) программа будет выполняться намного быстрее.

О формах представления чисел.

Для представления чисел широко исполь-зуются две формы: естественная и нормальная.

При естественной форме представления число имеет единственный вид записи, например: +195 - целое положительное число; –195 - целое отрица-тельное число; +0,025 - правильная положительная дробь; –195,025 - непра-вильная отрицательная дробь. Эта форма используется для представления целых чисел и чисел с фиксированной точкой (запятой).

При нормальной форме представления число записывается в виде

где М, П - мантисса и порядок числа.

Для нормальной формы представления характерна неоднозначная запись чис-ла, например: +195.025 = +195025 . 10 –3 = +19.5025 . 10 1 = +0.195025 . 10 3 . Как видно из примера, положение точки мантиссы зависит от значения порядка П. С изменением П (что всегда происходит в процессе вычислений) точка как бы начина-ет плавать. Поэтому нормальную форму (2.3.1) называют также формой пред-ставления чисел с плавающей точкой.

Числовая (как и любая другая) информация, подлежащая процессорной обра-ботке, представляется в виде

–разрядных двоичных кодов, для хранения которых используются ячейки памяти. Двоичные коды чисел имеют различные форматы.

Формат числа представляет собой совокупность разрядов (разрядную сетку), разделенную на отдельные поля: поле знака числа, поле модуля числа, поле ман-тиссы, поле модуля порядка и др. Для нумерации разрядов полей используется последовательность чисел, начиная с нуля (0, 1, 2, 3, …).

Беззнаковые целые.

Этот тип данных используется для представления нуля и положительных значений целых чисел.

На рис. 2.3.1 , а приведены форматы 8–разрядных целых чисел. Знаковый бит отсутствует, поэтому диапазон представления чисел составляет 0…2

Разрядность двоичного кода совпадает с разрядностью числа.

Знаковые целые.

Операцию вычитания двух положительных А и В чисел мож-но рассматривать как операцию алгебраического сложения чисел с разными зна-ками: А – В = А + (–

). Поэтому для замены арифметической операции вычитания операцией алгебраического сложения необходимо каким–то образом предста-вить знак числа. Обычно для знака двоичного числа отводится дополнительный разряд. Знак числа указывается в самом старшем разряде: 0 соответствует поло-жительному знаку « + » числа, 1 - отрицательному знаку « – ».

Для представления чисел со знаком широкое распространение получил до-полнительный код.

Для представления целых положительных двоичных чисел в

–разрядном до-полнительном коде все старшие незначащие разряды (включая знаковый) необ-ходимо заполнить нулями.

Для представления отрицательных чисел необходимо:

● проинвертировать все значащие цифровые разряды (модуль) числа;

● к полученному значению прибавить единицу;

● все старшие незначащие разряды (включая знаковый) заполнить единицами.

Например, 8–разрядный дополнительный код для положительного числа +6 имеет вид 00000110, для отрицательного числа – 6 - 11111010.

На рис. 2.3.1, б приведены форматы 8–разрядных знаковых чисел в допол-нительном коде. Диапазон их представления составляет – 2 (

–1) - разрядность значащей части числа. Современные микропроцессоры поддерживают знаковые целые длиной 16, 32 и 64 бит. Обычно используется два формата целых чисел: короткий с числом разрядов

и длинный с числом разря-дов 2

В процессе расчетов используется длинный формат, результаты выводят-ся в коротком формате. Если количество значащих разрядов модуля числа пре-вышает (

– 1), происходит переполнение разрядной сетки, приводящее к ошибке в представлении числа из–за потери старших разрядов модуля. После выполне-ния арифметических операций выход результата за диапазон отмечается уста-новкой а единицу флага переполнения О

Числа с фиксированной точкой.

При естественной форме представления вещественных чисел положение точки (запятой) фиксируется между целой и дроб-ной частями числа. Для изменения положения точки в вещественном числе необ-ходимо ввести масштабный коэффициент, значение которого должно быть выбра-но таким образом, чтобы сохранить неизменным значение вещественного числа. Часто точка фиксируется впереди старших разрядов модуля числа. При этом представление числа А с фиксированной точкой имеет вид правильной дроби, что соответствует условию

Выбранное количество значащих разрядов числа.

Условие (2.3.2) должно выполняться для исходных данных задачи и всех про-межуточных результатов вычислений, что обеспечивается путем выбора масш-табного коэффициента К.

При нарушении условия (2.3.2) число А Ф имеет целую часть, которая теряется, так как не попадает в разрядную сетку из–за переполнения. Поэтому при опреде-лении масштабного коэффициента К следует исходить из максимального значе-ния модуля задействованных при решении задачи чисел, приняв К> | А |

Тогда условие (2.3.2) для А Ф = А/К будет выполняться.

На рис. 2.3.2, а приведен формат компьютерного представления чисел А Ф с фиксированной точкой. При занесении числа А Ф в ячейку памяти свободные младшие разряды разрядной сетки заполняются нулями. Если число

значащих разрядов модуля |

– 1, то младшие разряды модуля, которые не по-местились в

–разрядной сетке, теряются. Это приводит к погрешности, абсолютное значение которой меньше единицы младшего разряда разрядной сетки, т. е.

32 абсолютная погрешность

0.5×10 – 30х0.3 = 0.5×10 – 9

Пусть заданы два числа А = –1010,101 2 и В = +10,10101 2 , для которых |

Поэтому масштаб-ный коэффициент К > |

2 4 = 10000 2 . Степень 4 свидетельствует о необходимости сдвига на 4 разря-да вправо исходных чисел

Действительно

А. К= –1010,101 . 10000 =

–0.1010101 2 ;

В Ф = В. К = 10,10101 . 10000 = 0,001010101 2 . Форматы представления чисел А Ф и В Ф показаны на рис. 2.3.2,6, в. Для сохранения точности компьютерного представления числа В Ф необходимо расширить разрядную сетку до 10 разрядов.

К достоинству представления чисел в форме с фиксированной точкой следует отнести простоту выполнения арифметических операций. Недостатки проявляют-ся в том, что:

● необходимо производить выбор масштабных коэффициентов;

● нули в старших разрядах модуля приводят к уменьшению количества разря-дов, занимаемых значащей частью модуля числа. В результате этого снижа-ется точность представления чисел с малыми значениями модуля.

Булевы типы.

Булевы величины являются беззнаковыми и используются при логических операциях

и др. Операция выполняется над от-дельными битами. Булевы операнды обрабатываются по частям, если их разряд-ность превышает разрядность процессора.

Двоично–десятичные целые.

В повседневной жизни человек пользуется де-сятичной системой счисления. Для хранения и обработки десятичных чисел в цифровых устройствах их представляют в виде двоичного кода. Представление десятичного числа, в котором каждая десятичная цифра отображается в виде двоичных символов 0 и 1, называют двоично–десятичным кодом. Так как алфавит десятичной системы состоит из 10 цифр, для записи каждой десятичной цифры выделяется слово, содержащее не менее четырех разрядов. Наиболее часто ис-пользуется 4–разрядное слово, именуемое тетрадой или полубайтом. С помощью тетрад вместо требуемых 10 можно получить 2 4 = 16 различных комбинаций, со-ставленных символов 0 и 1. При двоично–десятичном кодировании различным десятичным цифрам должны соответствовать различные комбинации символов О и 1, т. е. разрешены только 10 комбинаций из 16. Наличие разрешенных и за-прещенных комбинаций - важное свойство двоично–десятичных кодов. Это свойство отличает их от обычных позиционных систем счисления, в которых все комбинации разрешены. Общее количество различных разрешенных 4–разрядных кодов (тетрад), определяемое сочетаниями из 16 элементов по 10, составляет: С 10 16 = 18008. Широкое распространение получил так называемый код 8421, в котором используется первые десять значений двоичных чисел от 0000 (0 10) до 1001(9 10).

Достоинство 4–разрядных кодов состоит в том, что при кодировании десятич-ных чисел используется минимальное количество разрядов. Введение дополни-тельного 5–го разряда позволяет обнаружить ошибки при передаче числовой информации по линиям связи при наличии помех. Например, в 5–разрядном коде 2 из 5 все кодовые комбинации содержат две единицы и три нуля. Поэтому изме-нение любого разряда (на противоположное значение) приведет к запрещенной кодовой комбинации.

На рис. 2.3.3 приведен формат двоично–десятичного числа, содержащий 18 тетрад (

0) и знаковый разряд

(в остальных разрядах старшего байта установлены нулевые значения). Каждая тетрада соответствует одному разряду десятичного числа.

Числа с плавающей точкой.

Во многих случаях для проведения расчетов не-обходимо представлять числа с высокой точностью в широком диапазоне значе-ний. Указанным требованиям отвечает нормальная форма чисел (2.3.1). Для вы-явления особенностей ее использования для представления чисел с плавающей точкой в цифровых системах будем полагать, что:

● для записи мантиссы используется (

1)–разрядный двоичный код, причем самый старший (

–й) разряд определяет знак мантиссы (числа), остальные разряды - модуль мантиссы. Значение модуля мантиссы |М| < 1, что соот-ветствует фиксации точки перед значащими цифрами (разрядами) модуля мантиссы;

● для записи порядка П используется (р + 1)–разрядный двоичный код, причем самый старший (р–й) разряд определяет знак порядка, остальные разряды - модуль порядка. Порядок П (целое число) указывает на действительное положение точки в числе.

На рис. 2.3.4, а приведен формат числа с плавающей точкой.

Точность представления чисел (2.3.1) зависит от количества значащих цифр (разрядов) мантиссы. Для повышения точности числа с плавающей точкой пред-ставляются в нормализованной форме, признаком которой служит наличие значащей цифры (единицы для

2) в самом старшем разряде модуля ман-тиссы. Значение модуля нормализованной мантиссы при

2 лежит в пределах 2 –1 ≤ |М| < 1 (для любых порядков П). В нормализованной форме могут быть представлены все числа из некоторого диапазона за исключением нуля.

Представим в формате с плавающей точкой двоичные числа А = +10010.10101 и В = –111.0101. Запишем А и В в нормализованной форме

А = +0.1001010101 . 2 5 , В= –0.1110101000 . 2 –3 .

На основании (2.3.4) записываем модули мантиссы |М

| = 1001010101 2 , |М

| = 1110101000 2 и моду-ли порядка в двоичной системе исчисления |П А | = 5 10 = 0101 2 , |П

| = 3 10 = 0011 2 . Выбираем общее число разрядов разрядной сетки

Р = 16. Принимаем количество разрядов для модуля мантиссы, равное 10, для модуля порядка - 4.

Форматы чисел А и В показаны на рис. 2.3.4, 6, в. Мантисса и порядок операнда В, имеющие отри-цательное значение, представлены в дополнительном коде:

|# + 1 = 0001010111 + 1 = 0001011110;

|# + 1 = 0011 + 1 = 0100, где # - инверсия.

Поскольку абсолютная погрешность представления чисел с плавающей точкой зависит от порядка П, дадим оценку относительной погрешности:

/ 2 –1 = 2 –(

Абсолютная погрешность представления модуля

–разрядной мантиссы; |

22 –1 - минимальное значение нормализованного модуля мантиссы.

Отметим, что в стандарте

754/854 используется порядок в форме П = Р – Е, где Е =

Смещение порядка; Р макс = 2Е. Это позволило исключить поле

знака порядка в формате представления чисел.

Представление чисел в компьютере

Целые числа являются простейшими числовыми данными, с которыми оперирует ЭВМ. Целые числа в компьютере хранятся в формате с фиксированной запятой . В этом случае каждому разряду ячейки памяти соответствует всегда один и тот же разряд числа, а «запятая» находится справа после младшего разряда.

Для хранения целого неотрицательного числа отводится одна ячейка памяти 1 байт (8 бит), т.е диапазон чисел, которые могут храниться в оперативной памяти в формате целых неотрицательных чисел, от 0 до 255 (всего 256). Минимальное число 0 соответствует восьми нулям, а максимальное 255 соответствует восьми единицам (255 10 = 11111111 2).

Для представления целого числа со знаком самый старший (левый) бит отводится под знак числа, остальные разряды - под само число. Если число положительное, то в знаковый разряд помещается 0, если отрицательное - 1. Например, в байте можно представить знаковые числа от -128 до 127.

Для компьютерного представления целых чисел обычно используется один, два или четыре байта, то есть ячейка памяти будет состоять из восьми, шестнадцати или тридцати двух разрядов соответственно.

Представление числа в привычной форме "знак"-"величина", при которой старший разряд ячейки отводится под знак, а остальные - под запись числа в двоичной системе, называется прямым кодом двоичного числа.

Например, прямой код двоичных чисел 1001 и -1001 для 8-разрядной ячейки равен 0 0001001 и 1 0001001 соответственно.

Положительные числа в ЭВМ всегда представляются с помощью прямого кода. Прямой код числа полностью совпадает с записью самого числа в ячейке машины.

Прямой код отрицательного числа отличается от прямого кода соответствующего положительного числа лишь содержимым знакового разряда.
Но отрицательные целые числа не представляются в ЭВМ с помощью прямого кода, для их представления используется дополнительный код.

Дополнительный код положительного числа равен прямому коду этого числа.

Дополнительный код отрицательного числа m равен 2 n -|m|, где n - количество разрядов в ячейке.

Дополнительный код используется для упрощения выполнения арифметических операций. Если бы вычислительная машина работала с прямыми кодами положительных и отрицательных чисел, то при выполнении арифметических операций следовало бы выполнять ряд дополнительных действий. Например, при сложении нужно было бы проверять знаки обоих операндов и определять знак результата. Если знаки одинаковые, то вычисляется сумма операндов и ей присваивается тот же знак. Если знаки разные, то из большего по абсолютной величине числа вычитается меньшее и результату присваивается знак большего числа. То есть при таком представлении чисел (в виде только прямого кода) операция сложения реализуется через достаточно сложный алгоритм. Если же отрицательные числа представлять в виде дополнительного кода, то операция сложения, в том числе и разного знака, сводится к их поразрядному сложению.

Алгоритм получения дополнительного кода отрицательного числа.

Для получения дополнительного k-разрядного кода отрицательного числа необходимо:

    модуль отрицательного числа представить прямым кодом в k- двоичных разрядах;

    значение всех бит инвертировать: все нули заменить на единицы, а единицы на нули, таким образом, получается k-разрядный обратный код исходного числа);

    к полученному обратному коду прибавить единицу.

Пример:

Получим 8-разрядный дополнительный код числа -52:
00110100 - число |-52|=52 в прямом коде
11001011 - число -52 в обратном коде
11001100 - число -52 в дополнительном коде

Представление вещественных чисел в компьютере.

Для представления вещественных чисел в современных компьютерах принят способ представления с плавающей запятой .

Этот способ представления опирается на нормализованную (экспоненциальную) запись действительных чисел.
Нормализованная запись отличного от нуля действительного числа A - это запись вида:
А= m* q n ,
где
m - мантисса числа (правильная дробь, у которой первая цифра после запятой не равна нулю),
q - основание системы,
n - порядок числа.

Примеры:
1. 3,1415926 = 0, 31415926 * 101;
2. 1000=0,1 * 104;
3. 0,123456789 = 0,123456789 * 100;
4. 0,00001078 = 0,1078 * 8-4; (порядок записан в 10-й системе)
5. 1000,00012 = 0, 100000012 * 24.

При представлении чисел с плавающей запятой часть разрядов ячейки отводится для записи порядка числа, остальные разряды - для записи мантиссы. По одному разряду в каждой группе отводится для изображения знака порядка и знака мантиссы.

Любому, кто хоть раз задумывался в жизни о том, чтобы стать "айтишником" или системным администратором, да и просто связать судьбу с знание о том, как происходит представление чисел в абсолютно необходимо. Ведь именно на этом основываются языки программирования низкого уровня, такие как Assembler. Поэтому сегодня мы рассмотрим представление чисел в компьютере и их размещение в ячейках памяти.

Система счисления

Если вы читаете данную статью, то, скорее всего, уже знаете об этом, но повторить стоит. Все данные в персональном компьютере хранятся в двоичной Это означает, что любое число необходимо представить в соответствующей форме, то есть состоящим из нулей и единиц.

Чтобы перевести привычные для нас десятичные числа к виду, понятному компьютеру, нужно воспользоваться описанным ниже алгоритмом. Существуют и специализированные калькуляторы.

Итак, для того чтобы перевести число в двоичную систему счисления, нужно взять выбранное нами значение и поделить его на 2. После этого мы получим результат и остаток (0 или 1). Результат опять делим 2 и запоминаем остаток. Данную процедуру нужно повторять до тех пор, пока в итоге также не окажется 0 или 1. Затем записываем конечное значение и остатки в обратном порядке, как мы их получали.

Именно так и происходит представление чисел в компьютере. Любое число записывается в двоичной форме, а потом занимает ячейку памяти.

Память

Как вам должно быть уже известно, минимальная единица измерения информации составляет 1 бит. Как мы уже выяснили, представление чисел в компьютере происходит в двоичном формате. Таким образом, каждый бит памяти будет занят одним значением - 1 или 0.

Для хранения используются ячейки. Каждая такая единица содержит до 8 бит информации. Поэтому можно сделать вывод, что минимальное значение в каждом отрезке памяти может составлять 1 байт или быть восьмизначным двоичным числом.

Целые

Наконец мы подобрались к непосредственному размещению данных в компьютере. Как было уже сказано, первым делом процессор переводит информацию в двоичный формат, а только затем размещает в памяти.

Начнем мы с самого простого варианта, коим является представление целых чисел в компьютере. Память ПК отводит под этот процесс до смешного малое количество ячеек - всего одну. Таким образом, максимум в одном слоте могут быть значения от 0 до 11111111. Давайте переведём максимальное число в привычную нам форму записи.
Х = 1 × 2 7 + 1 × 2 6 + 1 × 2 5 + 1 × 2 4 + 1 × 2 3 + 1 × 2 2 + 1 × 2 1 + 1 × 2 0 = 1 × 2 8 - 1 = 255.

Теперь мы видим, что в одной ячейке памяти может располагаться значение от 0 до 255. Однако это относится исключительно к целым неотрицательным числам. Если же компьютеру понадобится записать отрицательное значение, всё пройдет немного по-другому.

Отрицательные числа

Теперь давайте посмотрим, как происходит представление чисел в компьютере, если они являются отрицательными. Для размещения значения, которое меньше нуля, отводится две ячейки памяти, или 16 бит информации. При этом 15 уходят под само число, а первый (крайний левый) бит отдается под соответствующий знак.

Если цифра отрицательная, то записывается "1", если положительная, то "0". Для простоты запоминания можно провести такую аналогию: если знак есть, то ставим 1, если его нет, то ничего (0).

Оставшиеся 15 бит информации отводятся под число. Аналогично предыдущему случаю, в них можно поместить максимум пятнадцать единиц. Стоит отметить, что запись отрицательных и положительных чисел существенно отличается друг от друга.

Для того чтобы разместить в 2 ячейках памяти значение больше нуля или равное ему, используется так называемый прямой код. Данная операция производится так же, как и было описано, а максимальное А = 32766, если использовать Сразу хочется отметить, что в данном случае "0" относится к положительным.

Примеры

Представление целых чисел в памяти компьютера не является такой уж трудной задачей. Хотя она немного усложняется, если речь идет об отрицательном значении. Для записи числа, которое меньше нуля, используется дополнительный код.

Чтобы его получить, машина производит ряд вспомогательных операций.

  1. Сначала записывается модуль отрицательного числа в двоичном счислении. То есть компьютер запоминает аналогичное, но положительное значение.
  2. Затем проводится инвертирование каждого бита памяти. Для этого все единицы заменяются нулями и наоборот.
  3. Прибавляем "1" к полученному результату. Это и будет дополнительный код.

Приведем наглядный пример. Пусть у нас есть число Х = - 131. Сначала получаем его модуль |Х|= 131. Затем переводим в двоичную систему и записываем в 16 ячеек. Получим Х = 0000000010000011. После инвертирования Х=1111111101111100. Добавляем к нему "1" и получаем обратный код Х=1111111101111101. Для записи в 16-битную ячейку памяти минимальным числом является Х = - (2 15) = - 32767.

Длинные целые

Как видите, представление вещественных чисел в компьютере не так уж и сложно. Однако рассмотренного диапазона может не хватать для большинства операций. Поэтому, для того чтобы разместить большие числа, компьютер выделяет из памяти 4 ячейки, или 32 бита.

Процесс записи абсолютно не отличается от представленного выше. Так что мы просто приведем диапазон чисел, которые могут храниться в данном типе.

Х мах =2 147 483 647.

Х min =- 2 147 483 648.

Данных значений в большинстве случаев достаточно для того, чтобы записывать и проводить операции с данными.

Представление вещественных чисел в компьютере имеет свои преимущества и недостатки. С одной стороны, данная методика позволяет проще производить операции между целочисленными значениями, что значительно ускоряет работу процессора. С другой стороны, данного диапазона недостаточно для решения большинства задач экономики, физики, арифметики и других наук. Поэтому теперь мы рассмотрим очередную методику для сверхвеличин.

Плавающая запятая

Это последнее, что вам необходимо знать про представление чисел в компьютере. Поскольку при записи дробей возникает проблема определения положения запятой в них, для размещения подобных цифр в компьютере используется экспоненциальная форма.

Любое число может быть представлено в следующей форме Х = m * р п. Где m - это мантисса числа, р - основание системы счисления и п - порядок числа.

Для стандартизации записи чисел с плавающей запятой используется следующее условие, согласно которому модуль мантиссы должен быть больше или равен 1/п и меньше 1.

Пусть нам дано число 666,66. Приведём его к экспоненциальной форме. Получится Х = 0,66666 * 10 3 . Р = 10 и п = 3.

На хранение значений с плавающей запятой обычно выделяется 4 или 8 байт (32 или 64 бита). В первом случае это называется числом обычной точности, а во втором - двойной точности.

Из 4 байт, выделенных под хранение цифр, 1 (8 разрядов) отдается под данные о порядке и его знаке, а 3 байта (24 разряда) уходят на хранение мантиссы и её знака по тем же принципам, что и для целочисленных значений. Зная это, мы можем провести нехитрые расчеты.

Максимальное значение п = 1111111 2 = 127 10 . Исходя из него, мы можем получить максимальный размер числа, которое может храниться в памяти компьютера. Х=2 127 . Теперь мы можем вычислить максимально возможную мантиссу. Она будет равна 2 23 - 1 ≥ 2 23 = 2 (10 × 2,3) ≥ 1000 2,3 = 10 (3 × 2,3) ≥ 10 7 . В итоге, мы получили приближенное значение.

Если теперь мы объединим оба расчета, то получим значение, которое может быть записано без потерь в 4 байта памяти. Оно будет равно Х = 1,701411 * 10 38 . Остальные цифры были отброшены, поскольку именно такую точность позволяет иметь данный способ записи.

Двойная точность

Поскольку все вычисления были расписаны и объяснены в предыдущем пункте, здесь мы расскажем всё очень коротко. Для чисел с двойной точностью обычно выделяется 11 разрядов для порядка и его знака, а также 53 разряда для мантиссы.

П = 1111111111 2 = 1023 10 .

М = 2 52 -1 = 2 (10*5.2) = 1000 5.2 = 10 15.6 . Округляем в большую сторону и получаем максимальное число Х = 2 1023 с точностью до "м".

Надеемся, информация про представление целых и вещественных чисел в компьютере, которую мы предоставили, пригодится вам в обучении и будет хоть немного понятнее, чем то, что обычно пишут в учебниках.



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: