Хранение в памяти вещественных чисел — в помощь студенту

В начале главы мы отмечали принципиальное различие между вещественными и целыми числами: целые числа дискретны, а вещественные, напротив, непрерывны, а значит, не могут быть полностью корректно перенесены в дискретную по своей природе вычислительную машину. Как же всё-таки кодируются в компьютерах вещественные числа?

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

разрядной сетке конкретной ЭВМ — раз и навсегда для всех чисел и для всех технических устройств этой машины. Все вычислительные алгоритмы были заранее «настроены» на это фиксированное размещение.

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

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

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

Тем не менее работа с фиксированным размещением запятой не только показала недостатки метода, но и наметила путь их устранения. В самом деле, если наиболее сложным и трудоёмким местом является масштабирование данных, надо его автоматизировать.

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

Конечно, для этого нужно разрешить компьютеру «перемещать» запятую, а значит, дополнительно как-то сохранять в двоичном коде числа информацию о ее текущем положении. В этом и заключается главная идея представления чисел с плавающей запятой1.

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

A=±ZBP,

где Z называют значащей частью, а показатель степени Р — порядком числа (рис. 4.19). Для десятичной системы это выглядит привычно, например, заряд электрона равен -1,6 ■ 10~19 кулона, а скорость света в вакууме составляет 3 ■ 108 м/с.

Хранение в памяти вещественных чисел - в помощь студенту

Однако представление числа с плавающей запятой не един¬ственно. Например, число 23,4 можно записать следующими способами:

2340 • 10-2 — 234 ■ 10-1 = 23,4 -10° = 2,34 ■ 101 -= 0,234 ■ 102 = 0,0234 ■ 103 = …

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

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

все представления,в которых  значащая часть содержит нули непосредственно после запятой  (2340, 23400 и т.п ) или перед ней ( 2340, 23400 и т.п) не подходят , поскольку, сохраняя эти незначащие нули, мы напрасно увеличиваем разрядность чисел.

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

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

Но взгляните на рис. 4.20, а, изображающий такое число на индикаторе: первый разряд всегда равен нулю, что делает его практически бесполезным. Поэтому с точки зрения экономии разрядов лучше взять другой вариант, в котором значащая часть равна 2,34 (рис. 4.20, б). Именно такой выбор закреплён в стан¬дарте IEEE 7541, на котором основана арифметика вещественных чисел в современных компьютерах.

Хранение в памяти вещественных чисел - в помощь студенту

Итак, существуют два приблизительно равноценных способа представления чисел с плавающей запятой:

оптимальный с теоретической точки зрения, в котором це¬лая часть нулевая, а первая цифра дробной части ненулевая (0,234 ■ 102);

Последняя вереи. IEEE 754-2008.

  • более удобный с практической точки зрения, в котором целая часть состоит из единственной ненулевой цифры (2,34 ■ 10')-

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

Причём в обоих случаях обычно используется один и тот же русский термин — мантисса.

Зато в англоязычной компьютерной литературе приняты два разных термина: в первом случае значащая часть называется mantissa (слово «мантисса» для математиков однозначно связано с дробной частью числа), а во втором — significand (значащая часть).

Далее мы будем использовать второй вариант, поскольку именно он даёт возможность решать задачи, связанные с практическим кодированием вещественных чисел. В связи с этим мы будем применять термин «значащая часть», а не «мантисса».

В компьютере используется такое представление вещественных чисел с плавающей запятой, при котором значащая часть Z удовлетворяет условию 1

Источник: https://uchebnik-rsh-3.ucoz.com/index/29_khranenie_v_pamjati_veshhestvennykh_chisel/0-232

ИНФОРМАЦИЯ: ХРАНЕНИЕ ВЕЩЕСТВЕННЫХ ЧИСЕЛ В ПАМЯТИ ЭВМ

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

  • Существуют два типа представления вещественных чисел:
  • 1. С плавающей запятой, точкой – нормальная запись:
  • Основан на нормальной (экспоненциальной) записи чисел. Число представляется в виде:
  • x = ± m∙np, где m – мантисса, р – порядок, n – основание.
  • Представление числа в формате с плавающей точкой различно.

Пример: 12.3456 = 0,123456*102 = 1234,56*10-2.

Положение точки в мантиссе определяется величиной порядка p с изменением порядка в большую или меньшую сторону точка перемещается вправо или влево, т.е. “плавает” в изображении числа.

Нормализация при вводе числа и в процессе вычислений осуществляется автоматически. При этом мантисса сдвигается влево на необходимое число разрядов. Происходит соответственно увеличение порядка.

При сложении нормального числа одного порядка, может возникнуть переполнение разрядной сетки (появляется 1 слева от запятой). Такого рода переполнение исключается сдвигом мантиссы вправо на 1 разряд и увеличение порядка на 1 единицу.

Такая коррекция называется нормализация вправо.

Мантисса должна удовлетворять условию: 0.1n ≤ m < 1, т.е. быть меньше 1 и первая значащая цифра не равна нулю. В памяти компьютера мантисса хранится как целое число, содержащее только значащие цифры. Таким образом, представление вещественного числа сводится к представлению пары целых чисел: мантиссы и порядка.

Читайте также:  Ядерные реакции - в помощь студенту

Пример. 4 байтовая ячейка памяти – 24 разряда под мантиссу.

+/- порядок Мантисса
1 бит 7 бит 2,3,4 байты
1-й байт

В 1-м байте содержится машинный порядок, в старшем бите хранится знак числа. На порядок отводится 7 бит (27 = 128). 128 значений может принимать диапазон значений порядка. Порядок может быть положительным или отрицательным (-64…+63).

В машинном представлении порядок смещен относительно математического и имеет только положительные значения. Смещение формируется так, чтобы минимальному математическому значению порядка соответствовал нуль (0).Связь между машинным и математическим порядком: Мp=p+6410.

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

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

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

3. Найти машинный порядок.

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

Пример: 250.187510 – записать внутреннее представление в 4-х байтовой ячейке.

1. Перевод в двоичную систему с 24 значащими цифрами 250,187510=11111010,0011000000000000002 (количество цифр до запятой = 810 = 10002).

  1. Запишем в форме нормализованного двоичного числа с плавающей точкой 0,1111 1010 0011 0000 0000 0000*1010002.
  2. Здесь мантисса, основание системы счисления (210=102) и порядок (810=10002) записаны в двоичной системе.
  3. Вычислим машинный порядок: М=10002+100 00002= 100 10002
  4. Запишем в 4-х байтовой ячейки с учетом знака:
0000 0000
1-й байт 2-й байт 3-й байт 4-й байт

2 . С фиксированной запятой, точкой – естественная запись:

Все разряды ячейки кроме знакового служат для изображения разрядов чисел, каждому разряду ячейки соответствует один и тот же разряд числа, что и фиксирует место запятой перед определенным разрядом.

Такая система упрощает выполнение арифметических действий, но сильно ограничивает диапазон чисел, которые могут быть представлены в этом типе. Диапазон – 1< x < 1 для представления чисел не укладывающихся в диапазон вводят масштабные коэффициенты.

Целые типы данных представляются в ЭВМ в формате с фиксированной запятой.

При работе с вещественными числами надо помнить:

1. При записи чисел возникают ошибки, которые возрастают при операциях.

2. Не разумно сравнивать 2 вещественных числа на точное равенство.

3. В результате вычитания возможна потеря точности.

4. «+» или «–» малого числа может никак не сказаться на результате.

5. Получение очень больших чисел может вызвать переполнение порядка, а очень малые – исчезновение числа.

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

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

Количество вещественных чисел, точно представляемых в памяти вычисляется по формуле N = 2t*(Mpmax = Pmin+1)+1, где

  • T – количество двоичных разрядов мантиссы
  • Mpmax – максимальное значение математического порядка.
  • Pmin – минимальное значение математического порядка.
  • Пример: для 4-х байтовой ячейки
  • Mpmax = 63, t = 24, Pmin = -64,
  • N = 2146683548.
  • Точность числа – количество значащих цифр, которое удается сохранить в ограниченном числе разрядов.
  • Вещественные типы данных в Pascal:
Размер Точность Обозначение Диапазон
7,8 Single 1.5*10-45…3.4*1048
11,12 Real

Источник: https://studopedia.ru/18_65557_informatsiya-hranenie-veshchestvennih-chisel-v-pamyati-evm.html

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

Вещественные числа обычно представляются в виде чисел с плавающей запятой.

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

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

В наиболее распространённом формате число с плавающей запятой представляется в виде набора битов, часть из которых кодирует собой мантиссу числа, другая часть — показатель степени, и ещё один бит используется для указания знака числа (0 — если число положительное, 1 — если число отрицательное). При этом порядок записывается как целое число, а мантисса — в нормализованном виде, своей дробной частью в двоичной системе счисления. Вот пример такого числа из 16 двоичных разрядов:

ЗнакПорядокМантисса0000000000000000
14 10 9
  • Знак — один бит, указывающий знак всего числа с плавающей точкой. Порядок и мантисса — целые числа, которые вместе со знаком дают представление числа с плавающей запятой в следующем виде:
  • , где s — знак, B-основание, E — порядок, а M — мантисса.
  • Порядок также иногда называют экспонентой или просто показателем степени.
  • При этом лишь некоторые из вещественных чисел могут быть представлены в памяти компьютера точным значением, в то время как остальные числа представляются приближёнными значениями.

Нормальной формой числа с плавающей запятой называется такая форма, в которой мантисса (без учёта знака) в десятичной системе находится на полуинтервале [0; 1).

Такая форма записи имеет недостаток: некоторые числа записываются неоднозначно (например, 0,0001 можно записать в 4 формах — 0,0001×100, 0,001×10−1, 0,01×10−2, 0,1×10−3), поэтому распространена также другая форма записи —нормализованная, в которой мантисса десятичного числа принимает значения от 1 (включительно) до 10 (не включительно), а мантисса двоичного числа принимает значения от 1 (включительно) до 2 (не включительно). То есть в мантиссе слева от запятой до применения порядка находится ровно один знак. В такой форме любое число (кроме 0) записывается единственным образом. Ноль же представить таким образом невозможно, поэтому стандарт предусматривает специальную последовательность битов для задания числа 0 (а заодно и некоторых других полезных чисел, таких как  и ). 

Диапазон чисел, которые можно записать данным способом, зависит от количества бит, отведённых для представления мантиссы и показателя.

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

К ним относятся ноль, значения NaN (Not a Number, «не число», получается как результат операций типа деления нуля на ноль) и .

НазваниеТип в языке программирования CДиапазонБиты мантиссыБиты
Half precision Нет 6,10×10-5..65504 10+1 16
Single precision float 3,4×10-38..3,4×1038 23+1 32
Double precision double 1,7×10-308..1,7×10308 52+1 64

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

Как видно из таблицы, величина это типа занимает в памяти 8 байт. На рисунке ниже показано, как здесь представлены поля мантиссы и порядка (нумерация битов осуществляется справа налево):

Читайте также:  Соцветие. биологическое значение соцветий - в помощь студенту
S Смещенный порядок Мантисса
63 62..52 51..0

Можно заметить, что старший бит, отведенный под мантиссу, имеет номер 51, т.е. мантисса занимает младшие 52 бита. Черта указывает здесь на положение двоичной запятой.

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

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

Например, для типа Double порядок занимает 11 бит и имеет диапазон от 2-1023до 21023, поэтому смещение равно 1023(10) = 1111111111(2). Наконец, бит с номером 63 указывает на знак числа.

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

  1. перевести модуль данного числа в двоичную систему счисления;
  2. нормализовать двоичное число, т.е. записать в виде M × 2p, где M — мантисса (ее целая часть равна 1(2)) и p — порядок, записанный в десятичной системе счисления;
  3. прибавить к порядку смещение и перевести смещенный порядок в двоичную систему счисления;
  4. учитывая знак заданного числа (0 — положительное; 1 — отрицательное), выписать его представление в памяти ЭВМ.

Пример. Запишем код числа -312,3125.

  1. Двоичная запись модуля этого числа имеет вид 100111000,0101.
  2. Имеем 100111000,0101 = 1,001110000101 × 28.
  3. Получаем смещенный порядок 8 + 1023 = 1031. Далее имеем 1031(10) = 10000000111(2).
  4. Окончательно
    1 10000000111 0011100001010000000000000000000000000000000000000000
    63 62..52 51..0
  1. Очевидно, что более компактно полученный код стоит записать следующим образом: C073850000000000(16).
  2. Другой пример иллюстрирует обратный переход от кода действительного числа к самому числу.
  3. Пример. Пусть дан код 3FEC600000000000(16) или
01111111110 1100011000000000000000000000000000000000000000000000
63 62..52 51..0
  1. Прежде всего замечаем, что это код положительного числа, поскольку в разряде с номером 63 записан нуль. Получим порядок этого числа: 01111111110(2) = 1022(10); 1022 — 1023 = -1.
  2. Число имеет вид 1,1100011 × 2-1 или 0,11100011.
  3. Переводом в десятичную систему счисления получаем 0,88671875.

Источник: Вики-конспект «Представление вещественных чисел»

Материалы по теме

Источник: http://forinformatics.blogspot.com/2013/10/blog-post_15.html

Форматы представления чисел в компьютере — урок. Информатика, 10 класс

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

Целочисленный формат (формат с фиксированной точкой) используется для представления в компьютере целых (англ. integer) положительных и отрицательных чисел. Для этого, как правило, используются форматы, кратные байту: (1), (2), (4) байта.

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

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

Однобайтовое представление применяется только для положительных целых чисел. В этом формате отсутствует знаковый разряд. Наибольшее двоичное число, которое может быть записано при помощи (1) байта, равно (11111111), что в десятичной системе счисления соответствует числу 25510.

Для положительных и отрицательных целых чисел обычно используется (2) и (4) байта, при этом старший бит выделяется под знак числа: (0) — плюс, (1) — минус.

Самое большое (по модулю) целое число со знаком, которое может поместиться в (2)-байтовом формате, это число (0 1111111 11111111), то есть при помощи подобного кодирования можно представить числа от −32 76810 до 32 76710.

Обрати внимание!

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

Формат с плавающей точкой (нормализованная форма) используется для представления в компьютере действительных чисел (англ. real). Числа с плавающей точкой размещаются, как правило, в (4) или (8) байтах.

Нормализованная форма представления чисел обеспечивает огромный диапазон их записи и является основной в современных ЭВМ.

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

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

Например, положительное число +13510 в зависимости от формата представления в компьютере будет иметь следующий вид:- для формата в виде (1) байта — (10000111) (отсутствует знаковый разряд);- для формата в виде (2) байтов — (0 0000000 10000111);

— для формата в виде (4) байтов — (0 0000000 00000000 00000000 10000111).

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

Для представления целого отрицательного числа в компьютере используется дополнительный код. Такое представление позволяет заменить операцию вычитания числа операцией сложения с дополнительным кодом этого числа. Знаковый разряд целых отрицательных чисел всегда равен (1).

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

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

— полученное число переводится в обратный код (нули заменяются единицами, а единицы — нулями);

— к полученному коду прибавляется (1).

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

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

Отрицательное число может быть представлено в виде (2) или (4) байт.

Например, представим число −13510 в (2)-байтовом формате:

— 13510®  (10000111) (перевод десятичного числа без знака в двоичный код);- (0 0000000 10000111 )(дополнение двоичного числа нулями слева в пределах формата);

— (0 0000000 10000111 )®  (1 1111111 01111000 )(перевод в обратный код);

— (1 1111111 01111000 )®  (1 1111111 01111001) (перевод в дополнительный код).

Представление вещественного (действительного) числа в компьютере

Вещественное число может быть представлено в экспоненциальном виде, например:

  • 1600000010=0,16⋅108
  • −0,000015610=−0,156⋅10−4
  • В этом формате вещественное число ((R)) представляется в виде произведения мантиссы ((m)) и основания системы счисления ((P)) в целой степени ((n)), называемой порядком.
  • Представим это в общем виде, как: R=m⋅Pn.
Читайте также:  Уравнение гаммета для реакций электрофильного ароматического замещения - в помощь студенту

Порядок (n) указывает, на какое количество позиций и в каком направлении должна сместиться в мантиссе точка (запятая), отделяющая дробную часть от целой. Мантисса, как правило, нормализуется, то есть представляется в виде правильной дроби (0)

Источник: https://www.yaklass.ru/p/informatika/10-klass/informatciia-i-informatcionnye-protcessy-11955/predstavlenie-chislovoi-informatcii-v-kompiutere-11901/re-ab6ca0b7-d4b6-49e0-9bb9-b3fbdcac5692

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

Скачать бесплатно книгу Ассемблер для начинающих

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

Но в этом формате есть один подводный камень – знак может иметь не только число, но и порядок числа также может иметь знак (то есть степень дроби может быть как положительной, так и отрицательной).

Чтобы не хранить знак порядка, был придуман смещённый порядок.

Если для задания порядка выделено k разрядов, то к истинному значению порядка прибавляют смещение, таким образом, смещённый порядок определяется по формуле:

СП = ИП + 2k-1 – 1 где СП – смещённый порядок, ИП – истинный порядок, k – количество разрядов, выделенных для порядка

  • Например, истинный порядок, лежащий в диапазоне –127…+128 представляется смещённым порядком, значения которого меняются в диапазоне 0…255.
  • То есть при ИП = -127:

СП = -127 + 28-1 — 1 = -127 + 128 — 1 = 0 При ИП = 128: СП = 128 = 128 + 28-1 – 1 = 128 + 128 — 1 = 255 Для представления числа в диапазоне 0…255 требуется 1 байт (8 разрядов), то есть k = 8.

Алгоритм представления вещественного числа в памяти компьютера

  1. Перевести число из Р-ичной системы в двоичную
  2. Представить двоичное число в нормализованной экспоненциальной форме
  3. Рассчитать смещённый порядок числа
  4. Разместить знак, порядок и мантиссу в соответствующие разряды

А теперь попробуем сделать это с нашим многострадальным числом ПИ:3,14 = 3 + 0,14

3 = 11b Теперь преобразуем дробную часть числа:0,14 < 1/2, поэтому старший разряд равен 0 0,14 < 1/4, поэтому следующий разряд также равен 0 0,14 > (1/8 = 0,125), поэтому следующий разряд равен 1
0,14 – 0,125 = 0,015
0,015 < (1/16 = 0,0625), поэтому следующий разряд равен 0 0,015 < (1/32 = 0,03125), поэтому следующий разряд равен 0 0,015 < (1/64 = 0,015625), поэтому следующий разряд равен 0 0,015 > (1/128 = 0,0078125), поэтому следующий разряд равен 1
0,015 – 0,0078125 = 0,0071875
0,0071875 > (1/256 = 0,00390625), поэтому следующий разряд равен 1 Если вам не всё понятно, вернитесь к разделу Преобразование дробной части числа.

На этом, пожалуй, остановимся. Получилось, что число 0,14 в двоичной записи приблизительно равно

0,14 = 0,00100011b

Источник: http://www.av-assembler.ru/asm/afd/asm-real-memory.htm

Числа в памяти компьютера — Гипермаркет знаний

  • Гипермаркет знаний>>Информатика>>Информатика 9 класс>>Информатика: Числа в памяти компьютера
  • § 17. Числа в памяти компьютера
  • Основные темы параграфа:
  • ♦ представление целых чисел;♦ размер ячейки и диапазон значений чисел;
  • ♦ особенности работы компьютер с целыми числами;

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

Любая информация в памяти компьютера представляется в двоичном виде: последовательностью нулей и единиц. Исторически первым типом данных, с которыми стали работать компьютеры были числа. Теперь это и числа, и тексты, и изображение, и звук. Работа с данными любого типа в конечном счете сводится к обработке двоичных чисел — чисел, записываемых с помощью двух цифр — 0 и 1. Поэтому современные компьютерные технологииназывают цифровыми технологиями.

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

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

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

  1. 2510 = 110012.
  2. Теперь осталось «вписать» его в восьмиразрядную ячейку (записать так называемое внутреннее представление числа). Делается это так:
  3. 00011001.

Число записывается «прижатым» к правому краю ячейки (в младших разрядах). Оставшиеся слева разряды (старшие) заполняются нулями.

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

01111111.

Чему он равен в десятичной системе? Можно расписать это число в развернутой форме и вычислить выражение. Но можно решить задачу быстрее. Если к младшему разряду этого числа прибавить единицу, то получится число 10000000. В десятичной системе оно равно 27 = 128. Значит:

011111112 = 128 — 1 = 127.

Максимальное целое положительное число, помещающееся в 8-разрядную ячейку, равно 127.

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

  • Для представления отрицательных целых чисел используется дополнительный код.
  • Получить дополнительный код можно по следующему алгоритму:
  • 1) записать внутреннее представление положительного числа X;2) записать обратный код этого числа заменой во всех разрядах 0 на 1 и 1 на 0;3) к полученному числу прибавить 1.
  • Определим по этим правилам внутреннее представление числа -2510 в 8-разрядной ячейке:
  • 1) 000110012) 111001103)             +1    11100111 — это и есть представление числа -25.

В результате выполнения такого алгоритма единица в старшем разряде получается автоматически. Она и является признаком отрицательного значения.

Проверим полученный результат. Очевидно, что при сложении чисел +25 и -25 должен получиться ноль.

   00011001 +111001111 00000000

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

  1. Из этого примера теперь можно понять, почему представление отрицательного числа называется дополнительным кодом.
  2. Представление восьмиразрядного отрицательного числа -X дополняет представление соответствующего положительного числа +Х до значения 26.
  3. Размер ячейки к диапазон значений чисел

Наибольшее по модулю отрицательное значение в 8-разрядной ячейке равно -27 = -128.  Его внутреннее представление: 10000000. Таким образом, диапазон представления целых чисел в восьмиразрядной ячейке следующий:

-128

Источник: http://edufuture.biz/index.php?title=%D0%A7%D0%B8%D1%81%D0%BB%D0%B0_%D0%B2_%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D0%B8_%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%B0

Ссылка на основную публикацию