Представление чисел в компьютере
Представление чисел в формате с фиксированной запятой. Целые числа в компьютере хранятся в памяти в формате с фиксированной запятой. В этом случае каждому разряду ячейки памяти соответствует всегда один и тот же разряд числа, а "запятая" "находится" справа после младшего разряда, то есть вне разрядной сетки. 
Для хранения целых неотрицательных чисел отводится одна ячейка памяти (8 битов). Например, число А2 = = 111100002 будет храниться в ячейке памяти следующим образом: 
Максимальное значение целого неотрицательного числа достигается в случае, когда во всех ячейках хранятся единицы. Для n-разрядного представления оно будет равно 
2n - 1.  
Определим диапазон чисел, которые могут храниться в оперативной памяти в формате целых неотрицательных чисел. Минимальное число соответствует восьми нулям, хранящимся в восьми битах ячейки памяти, и равно нулю. Максимальное число соответствует восьми единицам и равно 
А = 1 × 27 + 1 × 26 + 1 × 25 + 1 × 24 + 1 × 23 + 1 × 22 + 1 × 21 + 1 × 20 = 1 × 28 - 1 = 25510.  
Диапазон изменения целых неотрицательных чисел чисел: от 0 до 255. 
Для хранения целых чисел со знаком отводится две ячейки памяти (16 битов), причем старший (левый) разряд отводится под знак числа (если число положительное, то в знаковый разряд записывается 0, если число отрицательное - 1). 
Представление в компьютере положительных чисел с использованием формата "знак-величина" называется прямым кодом числа. Например, число 200210 = 111110100102 будет представлено в 16-разрядном представлении следующим образом: 
   | 0 | 
   0 | 
   0 | 
   0 | 
   0 | 
   1 | 
   1 | 
   1 | 
   1 | 
   1 | 
   0 | 
   1 | 
   0 | 
   0 | 
   1 | 
   0 | 
 
 
Максимальное положительное число (с учетом выделения одного разряда на знак) для целых чисел со знаком в n-разрядном представлении равно: 
А = 2n-1 - 1.  
Для представления отрицательных чисел используется дополнительный код. Дополнительный код позволяет заменить арифметическую операцию вычитания операцией сложения, что существенно упрощает работу процессора и увеличивает его быстродействие. 
Дополнительный   код  отрицательного   числа  А, хранящегося в n ячейках, равен 2n - |A|. 
Дополнительный код представляет собой дополнение модуля отрицательного числа А до 0, так как в n-разрядной компьютерной арифметике: 
2n - |А| + |А| = 0,  
поскольку в компьютерной n-разрядной арифметике 2n = 0. Действительно, двоичная запись такого числа состоит из одной единицы и n нулей, а в n-разрядную ячейку может уместиться только n младших разрядов, то есть n нулей. 
Для получения дополнительного кода отрицательного числа можно использовать довольно простой алгоритм: 
1.	Модуль числа записать в прямом коде в n двоичных разрядах. 
2.	Получить обратный код числа, для этого значения всех битов инвертировать (все единицы заменить на нули и все нули заменить на единицы). 
3.	К полученному обратному коду прибавить единицу. 
Запишем   дополнительный   код   отрицательного   числа -2002 для 16-разрядного компьютерного представления: 
 
   
При n-разрядном представлении отрицательного числа А в дополнительным коде старший разряд выделяется для хранения знака числа (единицы). В остальных разрядах записывается положительное число 
2n-1 - |А|. 
Чтобы число было положительным, должно выполняться условие 
|А| £ 2n-1 . 
Следовательно, максимальное значение модуля числа А в га-разрядном представлении равно: 
|А| = 2n-1 . 
Тогда минимальное отрицательное число равно: 
А = - 2n-1.  
Определим диапазон чисел, которые могут храниться в оперативной памяти в формате длинных целых чисел со знаком (для хранения таких чисел отводится четыре ячейки памяти - 32 бита). 
Максимальное положительное целое число (с учетом выделения одного разряда на знак) равно: 
А = 231 - 1 = 2 147 483 64710. 
Минимальное отрицательное целое число равно:  
А = -231 = - 2 147 483 64810. 
Достоинствами представления чисел в формате с фиксированной запятой являются простота и наглядность представления чисел, а также простота алгоритмов реализации арифметических операций. 
Недостатком представления чисел в формате с фиксированной запятой является небольшой диапазон представления величин, недостаточный для решения математических, физических, экономических и других задач, в которых используются как очень малые, так и очень большие числа. 
  
Представление чисел в формате с плавающей запятой. Вещественные числа хранятся и обрабатываются в компьютере в формате с плавающей запятой. В этом случае положение запятой в записи числа может изменяться. 
Формат чисел с плавающей запятой базируется на экспоненциальной форме записи, в которой может быть представлено любое число. Так число А может быть представлено в виде: 
 
где m - мантисса числа; 
q - основание системы счисления; 
n - порядок числа. 
Для единообразия представления чисел с плавающей запятой   используется нормализованная форма, при которой мантисса   отвечает условию: 
1/n £ |m| < 1. 
Это означает, что мантисса должна быть правильной дробью и иметь после запятой цифру, отличную от нуля. 
Преобразуем десятичное число 555,55, записанное в естественной форме, в экспоненциальную форму с нормализованной мантиссой: 
555,55 = 0,55555 × 103 . 
Здесь нормализованная мантисса: m = 0,55555, порядок: n = 3. 
Число в формате с плавающей запятой занимает в памяти компьютера 4 (число обычной точности) или 8 байтов (число двойной точности). При записи числа с плавающей запятой выделяются разряды для хранения знака мантиссы, знака порядка, порядка и мантиссы. 
Диапазон изменения чисел определяется количеством разрядов, отведенных для хранения порядка числа, а точность (количество значащих цифр) определяется количеством разрядов, отведенных для хранения мантиссы. 
Определим максимальное число и его точность для формата чисел обычной точности, если для хранения порядка и его знака отводится 8 разрядов, а для хранения мантиссы и ее знака - 24 разряда: 
   | 0 | 
   1 | 
   1 | 
   1 | 
   1 | 
   1 | 
   1 | 
   1 | 
   0 | 
   1 | 
   1 | 
   1 | 
   1 | 
   1 | 
   1 | 
   1 | 
   1 | 
   1 | 
   1 | 
   1 | 
   1 | 
   1 | 
   1 | 
   1 | 
 
   | знак и порядок | 
   знак и мантисса | 
 
 
 
Максимальное значение порядка числа составит 11111112 = 12710, и, следовательно, максимальное значение числа составит: 
2127 = 1,7014118346046923173168730371588  × 1038 .  
Максимальное значение положительной мантиссы равно: 
223 - 1 » 223 = 2(10 × 2,3)  » 10002,3 = 10(3 × 2,3) » 107.  
Таким образом максимальное значение чисел обычной точности с учетом возможной точности вычислений составит 1,701411 × 1038 (количество значащих цифр десятичного числа в данном случае ограничено 7 разрядами). 
  
Задания 
1.26. Заполнить таблицу, записав отрицательные десятичные числа в прямом, обратном и дополнительном кодах в 16-разрядном представлении: 
   | Десятичные числа | 
   Прямой код | 
   Обратный код | 
   Дополнительный код | 
 
   | -50 | 
     | 
     | 
     | 
 
   | -500 | 
     | 
     | 
     | 
 
 
	
1.27.	Определить диапазон представления целых чисел со знаком (отводится 2 байта памяти) в формате с фиксированной запятой. 
1.28.	Определить максимальное число и его точность для формата чисел двойной точности, если для хранения порядка и его знака отводится 11 разрядов, а для хранения мантиссы и ее знака - 53 разряда. 
  
       |