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

Обновлено: 04.07.2024

Определение. Байтом называется последовательность из восьми бит. Байт является минимально адресуемым элементом памяти.

Определение. Словом называется последовательность из двух байтов. Адресом слова является адрес младшего байта и всегда является положительным (ноль рассматриваем как положительное число). Длина слова равна 16 битам.

Определение. Двойным словом называется последовательность из четырёх байтов. Адресом двойного слова является адрес младшего байта и всего является положительным (ноль рассматриваем как положительное число). Длина двойного слова равно 32 битам.

Рассмотрим следующие виды чисел, представляемых в памяти машины:

целые числа без знака

целые числа со знаком

числа с фиксированной запятой (точкой)

числа с плавающей запятой (точкой)

Целые числа без знака и со знаком

Числа без знака получили свое название потому, что среди этих чисел нет отрицательных. Количество различных чисел, которые можно записать в байте, слове или двойном слове определяется числом сочетаний с повторениями из 2 соответственно по 8, 16, 32. Таким образом, количество различных чисел следующее:

2 8 = 256 для байта

2 16 = 65536 для слова

2 32 = 4294967296 для двойного слова.

Целые числа без знака – это самый простой вид чисел: они представляют собой весь диапазон двоичных чисел, которые можно записать в байте, слове или двойном слове.

Диапазоны изменения целых чисел без знака следующие:

00H ( 0) - FF (255) для байта;

0000 ( 0) – FFFF (65535) для слова;

00000000 ( 0) – FFFFFFFF (4294967295) для двойного слова.

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

80H (-128) - 7FH (127)

8000H (-32768) - 7FFF (32767)

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

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

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

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

Исходное двоичное число (соответствует десятичному 65)
Инверсные биты:
Плюс 1, т.е. дополнительный код (соответствует десятичному числу (-65)

Сумма 65 и (-65) должна составлять ноль. Получим:

Все восемь бит имеют нулевое значение. Перенос единичного бита влево потерян.

Следует подчеркнуть, что знак числа условен. Одно и то же число, например FBH можно интерпретировать как число со знаком, так и число без знака.

Если битовую комбинацию представленную шестнадцатеричным числом FBH рассматривать как целое со знаком, то её значение будет равно (-5).

Если битовую комбинацию представленную шестнадцатеричным числом FBH рассматривать как целое без знака, то её значение будет рано 251.

Дадим выборочную таблицу 16-битовых чисел с указанием из машинного представления, а также значений без знака и со знаком. Из этой таблицы видно, что чисел со знаком размером в слово диапазон положительных значений простирается от 0 до 32767, а диапазон отрицательных значений до (-1) до (-32768).

16-ричное представление Десятичное представление без знака Десятичное представление со знаком
0000H Ноль
0001H +1 Минимальное положительное число
0002H +2
0003H +3
0004H +4
7FFCH +32764
7FFDH +32765
7FFEH +32766
7FFFH +32767 Максимальное положительное число
8000H -32768 Минимальное отрицательное число
8001H -32767
8002Н -32766
8003H -32765
FFFBH -0005
FFFCH -0004
FFFDH -0003
FFFEH -0002
FFFFH -0001 Минимальное отрицательное число

Среди команд процессора, выполняющих обработку чисел, можно выделить команды, безразличные к знаку числа (например, inc, add), команды предназначенные для обработки чисел без знака (ja, jb), а также команды, специально рассчитанные на обработку чисел со знаком (jg, jl).

Округление чисел с плавающей запятой (точкой)

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

В стандарте определены четыре режима округления:

округление к ближайшему представимому числу;

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

При округлении к 0 — ближайшее представимое число, не превосходящее по абсолютной величине точного значения.

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

исходная мантисса: 101010101010101010101010111111112

округленная мантисса: 101010101010101010101010000000002

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

исходная мантисса: 101010101010101010101011111111112

округленная мантисса: 101010101010101010101010000000002

Исключения

Стандартом IEEE 754 определены пять типов исключений:

¾ invalid operation — некорректная операция;

¾ division by zero — деление на нуль;

¾ underflow — потеря значимости;

¾ inexact — потеря точности.

В стандарте приводится список ситуаций, в которых выставляется исключение invalid operation. Ниже представлены некоторые из них:

¾ любые операции над SNaN;

¾ сложение бесконечностей с разными знаками или вычитание бесконечностей с одинаковыми знаками;

¾ извлечение квадратного корня из отрицательного числа.

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

Исключение division by zero выставляется, когда делитель равен нулю.

Обязательное условие возникновения исключения — не равное нулю или бесконечности делимое. В случае возникновения исключения division by zero

результат равен бесконечности:

делимое: 7FEFFFFFFFFFFFFF16 (1.797693e+308)

делитель: 000000000000000016 (+0)

исключения: division by zero

Исключение overflow возникает, когда результат операции превышает (по абсолютной величине) наибольшее представимое число:

делимое: 7FEFFFFFFFFFFFFF16 (1.797693e+308)

делитель: 0003A6B50B0F27BB16 (5.077619e–309)

частное: 7FEFFFFFFFFFFFFF16 (1.797693e+308)

исключения: overflow и inexact

Исключение underflow возникает, когда результат операции настолько мал (по абсолютной величине), что он может быть представлен только денормализованным числом:

делимое: 001000000000000016 (2.225074e–308)

делитель: 7FEFFFFFFFFFFFFF16 (1.797693e+308)

частное: 000000000000000016 (+0)

исключения: underflow и inexact

Исключение inexact возникает, когда результат операции отличается от точного

делимое: 27E83F0F3FFC953816 (1.786431e+000)

делитель: FBAF43813FFFFFFF16 (2.000000e+000)

частное: 2BC3037F3FEC953816 (8.932153e–001)

Алгоритм Малкома

В начале семидесятых годов 20-го века Malcolm и Gentleman предложили алгоритм для вывода некоторых характеристик систем с плавающей точкой.

while ((A+1.0)-A)-1.0 = 0.0

Двоичные файлы

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

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

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

Текстовые файлы.

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

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

Для английского языка, ставшего международным средством общения, противоречия уже сняты. Институт стандартизации США (ANSI – American Standard Institute) ввел в действие систему кодирования ASCII (American Standard Code for Information Interchange – стандартный код информационного обмена США). В системе ASCII закреплены две таблицы кодирования – базовая и расширенная. Базовая таблица закрепляет значения кодов от 0 до 127, а расширенная относится к символам от 128 до 255.

ASCII-код

С целью стандартизации в компьютерах используется американский национальный стандартный код для обмена информацией ASCII (American National Standard Code for Information). Наличие стандартного кода облегчает обмен данными между различными устройствами. Восьмибитовый расширенный ASCII-код обеспечивает представление 256 символов, включая символы для национальных алфавитов.

Но 01000001 представляет также букву А. Таким образом одна и та же комбинация из восьми битов может представлять как число, так и букву, а данном случае комбинаций 01000001 это 65, а с другой стороны – буква А. Все зависит от интерпретации битового содержания.

Если программа определяет элемент данных для арифметических целей, то 01000001 представляет двоичное число, эквивалентное десятичному числу 65.

Если программа определяет элемент данных (один смежный байт или более), имея в виду его описание, как, например, заголовок, тогда 01000001 представляет собой букву или «строку».

При программировании это различие становится понятным, так как назначение каждого элемента данных определено.

Закономерно возникает вопрос, откуда компьютер «знает», что значения восьми бит 01000001 представляют букву А. Когда на клавиатуре нажата клавиша А, операционная система принимает сигнал от этой конкретной клавиши в байт памяти. Это сигнал устанавливает биты в значения 01000001. Можно переслать этот байт в память, и если передать его на экран или принтер, то будет сгенерирована буква А.

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

Список литературы

Лекция №8

«Международный факультет прикладных информационных технологий

Бакалавриат «Информатика и вычислительная техника»

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

Определение. Байтом называется последовательность из восьми бит. Байт является минимально адресуемым элементом памяти.

Определение. Словом называется последовательность из двух байтов. Адресом слова является адрес младшего байта и всегда является положительным (ноль рассматриваем как положительное число). Длина слова равна 16 битам.

Определение. Двойным словом называется последовательность из четырёх байтов. Адресом двойного слова является адрес младшего байта и всего является положительным (ноль рассматриваем как положительное число). Длина двойного слова равно 32 битам.

Рассмотрим следующие виды чисел, представляемых в памяти машины:

целые числа без знака

целые числа со знаком

числа с фиксированной запятой (точкой)

числа с плавающей запятой (точкой)

Целые числа без знака и со знаком

Числа без знака получили свое название потому, что среди этих чисел нет отрицательных. Количество различных чисел, которые можно записать в байте, слове или двойном слове определяется числом сочетаний с повторениями из 2 соответственно по 8, 16, 32. Таким образом, количество различных чисел следующее:

2 8 = 256 для байта

2 16 = 65536 для слова

2 32 = 4294967296 для двойного слова.

Целые числа без знака – это самый простой вид чисел: они представляют собой весь диапазон двоичных чисел, которые можно записать в байте, слове или двойном слове.

Диапазоны изменения целых чисел без знака следующие:

00H ( 0) - FF (255) для байта;

0000 ( 0) – FFFF (65535) для слова;

00000000 ( 0) – FFFFFFFF (4294967295) для двойного слова.

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

80H (-128) - 7FH (127)

8000H (-32768) - 7FFF (32767)

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

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

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

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

Исходное двоичное число (соответствует десятичному 65)
Инверсные биты:
Плюс 1, т.е. дополнительный код (соответствует десятичному числу (-65)

Сумма 65 и (-65) должна составлять ноль. Получим:

Все восемь бит имеют нулевое значение. Перенос единичного бита влево потерян.

Следует подчеркнуть, что знак числа условен. Одно и то же число, например FBH можно интерпретировать как число со знаком, так и число без знака.

Если битовую комбинацию представленную шестнадцатеричным числом FBH рассматривать как целое со знаком, то её значение будет равно (-5).

Если битовую комбинацию представленную шестнадцатеричным числом FBH рассматривать как целое без знака, то её значение будет рано 251.

Дадим выборочную таблицу 16-битовых чисел с указанием из машинного представления, а также значений без знака и со знаком. Из этой таблицы видно, что чисел со знаком размером в слово диапазон положительных значений простирается от 0 до 32767, а диапазон отрицательных значений до (-1) до (-32768).

16-ричное представление Десятичное представление без знака Десятичное представление со знаком
0000H Ноль
0001H +1 Минимальное положительное число
0002H +2
0003H +3
0004H +4
7FFCH +32764
7FFDH +32765
7FFEH +32766
7FFFH +32767 Максимальное положительное число
8000H -32768 Минимальное отрицательное число
8001H -32767
8002Н -32766
8003H -32765
FFFBH -0005
FFFCH -0004
FFFDH -0003
FFFEH -0002
FFFFH -0001 Минимальное отрицательное число

Среди команд процессора, выполняющих обработку чисел, можно выделить команды, безразличные к знаку числа (например, inc, add), команды предназначенные для обработки чисел без знака (ja, jb), а также команды, специально рассчитанные на обработку чисел со знаком (jg, jl).

Сайт учителя информатики. Технологические карты уроков, Подготовка к ОГЭ и ЕГЭ, полезный материал и многое другое.

Информатика. 10 класса. Босова Л.Л. Оглавление

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

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

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

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

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

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

Для компьютерного представления целых чисел используется несколько различных способов, отличающихся друг от друга количеством разрядов (под целые числа обычно отводится 8, 16, 32 или 64 разряда) и наличием или отсутствием знакового разряда.

Беззнаковое представление можно использовать только для неотрицательных целых чисел.

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

Например, десятичные числа 130 и 39 в восьмиразрядном представлении будут иметь вид:


Понятно, что существуют ограничения на числа, которые могут быть записаны в n-разрядную ячейку памяти. Максимальное значение целого неотрицательного числа достигается в случае, когда во всех разрядах ячейки хранятся единицы. Для n-разрядного представления оно будет равно 2 n -1. Минимальное число соответствует n нулям, хранящимся в n разрядах памяти, и равно нулю. Далее приведены диапазоны значений для беззнаковых целых n-разрядных чисел:


При знаковом представлении целых чисел старший разряд ячейки отводится под знак (0 — для положительных, 1 — для отрицательных чисел), а остальные разряды — под цифры числа.

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

Например, прямые коды чисел 48 и -52 для восьмиразрядной ячейки равны:



В математике множество целых чисел бесконечно.

Компьютер работает с ограниченным множеством целых чисел.

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

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

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


Рис. 3.5. Реверсивный счётчик

При возрастании показаний счётчика до максимального, например до 999, следующими его состояниями должны быть 1000, 1001, 1002 и т. д. Но для изображения старшей единицы в счётчике не хватает разряда, происходит переполнение разрядной сетки. Поэтому мы увидим 000, 001, 002 и т. д.

При убывании показаний счётчика после состояния 000 будут идти 999, 998, 997 и т. д. Но после достижения нуля последовательное вычитание единицы должно давать -1, -2, -3 и т. д.

Будем рассматривать числа 999, 998, 997 как коды чисел -1, -2, -3 и проверим на их примере соотношение: у + (-у) = 0:

1 + 999 = 1000;
2 + 998 = 1000;
3 + 997 = 1000.

С учётом того что единица переполнения теряется, мы, сложив число и код противоположного ему числа, получаем ноль!

Вот ещё несколько примеров:

5-2 = 5 + [-2] = 5 + 998 = 1003;
7-5 = 7 + [-5] = 7 + 995 = 1002.

Для устранения неоднозначности в кольце будем считать половину состояний (0-499) кодами нуля и положительных чисел, а оставшуюся половину (500-999) — кодами отрицательных чисел.

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

Рассмотрим алгоритм получения дополнительного n-разрядного кода отрицательного числа:

1) модуль числа представить прямым кодом в n двоичных разрядах;
2) значения всех разрядов инвертировать (все нули заменить единицами, а единицы — нулями);
3) к полученному представлению, рассматриваемому как n-разрядное неотрицательное двоичное число, прибавить единицу.

Пример 1. Найдём 16-разрядный дополнительный код отрицательного числа -201710.


Использование дополнительного кода позволяет свести операцию вычитания чисел к операции поразрядного сложения кодов этих чисел.

Выполним эту операцию в 16-разрядных машинных кодах.

Нам потребуются прямой код числа 48 и дополнительный код числа -2017.


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

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


Получаем: -111101100012 = -1969.

13.2. Представление вещественных чисел

В математике множество вещественных чисел непрерывно, бесконечно и не ограничено.

Попробуйте обосновать это утверждение.

Вещественные числа записываются в естественной или в экспоненциальной форме.

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

Например: 12,34; 0,0056; -708,9.

В экспоненциальной форме вещественное число а представляется как а = ± m • q p , где m — мантисса числа, q — основание системы счисления, р — порядок числа.

Например, длину некоторого отрезка, равного 47,8 см, можно записать так:

1) 478 • 10 -1 см;
2) 47,8 • 10 0 см;
3) 4,78 • 10 1 см;
4) 0,478 • 10 2 см;
5) 0,000478 • 10 5 см.

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

Нормализованная запись отличного от нуля вещественного числа 1) — это запись вида а = ± m • q p , где р — целое число (положительное, отрицательное или ноль), m — дробь, целая часть которой содержит одну значащую (ненулевую) цифру, т. е. 1 ≤ m < q.

1) Стандарт IEEE 754.

Примеры нормализации чисел:

1) 31,415926 = 3,1415926 • 10 1 ;
2) 1000 = 1,0 • 10 3 ;
3) 0,123456789 = 1,23456789 • 10 -1 ;
4) 0,00001078 = 1,078 • 108 -5 ;
5) 1000,00012 = 1,00000012 • 102 11 ;
6) AB,CDEF16 = A,BCDEF16 • 1016 1 .

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


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

• 6 знакомест отводится под мантиссу (одно знакоместо отводится под знак мантиссы, четыре — под цифры мантиссы, одно — под точку, разделяющую целую и дробную части мантиссы);
• одно знакоместо отводится под символ «Е»;
• три знакоместа отводятся под порядок (одно — под знак порядка, два — под цифры порядка).

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

Число 12,34 в таком калькуляторе будет представлено как +1.234Е+01.

Число 12,35 будет представлено как + 1.235Е+01.

Как известно, между числами 12,34 и 12,35 находится бесконечное множество вещественных чисел, например: 12,341; 12,3412; 12,34123 и т. д.

Каждое из этих чисел в нашем калькуляторе будет представлено как + 1.234Е+01. Для последних разрядов у нас просто не хватает знакомест! Аналогичная ситуация имеет место и в компьютерном представлении вещественных чисел, независимо от того, ячейки какой разрядности там использованы.

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

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

САМОЕ ГЛАВНОЕ

В математике множество целых чисел дискретно, бесконечно и не ограничено.

Для компьютерного представления целых чисел используется несколько различных способов, отличающихся друг от друга количеством разрядов (8, 16, 32 или 64 разряда) и наличием или отсутствием знакового разряда. В любом случае компьютерное представление целых чисел дискретно, конечно и ограничено.

В математике множество вещественных чисел непрерывно, бесконечно и не ограничено.

Для компьютерного представления вещественных чисел используется нормализованная запись вещественного числа а = ± m • q p , где q — основание системы счисления, р — целое число (положительное, отрицательное или ноль), m — дробь, целая часть которой содержит одну значащую (ненулевую) цифру, т. е. 1 ≤ m < q.

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

Вопросы и задания

*7. Найдите десятичные эквиваленты чисел, представленных в дополнительном коде: 1) 00000100; 2) 11111001.

8. Для хранения целого числа со знаком в компьютере используется два байта. Сколько единиц содержит внутреннее представление числа -101, записанного:

1) в прямом коде;
2) в дополнительном коде?

9. Вычислите с помощью калькулятора (приложение Windows) в режиме «Программист» следующие примеры:

Как вы можете объяснить полученные результаты?

10. Запишите десятичные числа в нормализованной форме:

1) 217,934; 2) 75321; 3) 10,0101; 4) 200450.

11. Сравните следующие числа:

1) 318,4785 • 10 9 и 3,184785 • 10 11 ;
2) 218,4785 • 10 -3 и 1847,85 • 10 -4 .

12. Выполните операцию сложения:

1) 0,397621 • 10 3 + 0,2379 • 10 1 ;
2) 0,251452 • 10 -3 + 0,125111 • 10 -2 .

13. Чем ограничивается диапазон представимых в памяти компьютера вещественных чисел?

14. Почему множество вещественных чисел, представимых в памяти компьютера, дискретно, конечно и ограничено?

*15. Попытайтесь самостоятельно сформулировать основные принципы представления данных в компьютере.

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

Содержимое ячейки памяти называется машинным словом.

Ячейка памяти состоит из некоторого числа однородных элементов. Каждый элемент способен находиться в одном из двух состояний и служит для изображения одного из разрядов числа. Именно поэтому каждый элемент ячейки называют разрядом.

Нумерацию разрядов в ячейке принято вести справа налево, самый правый разряд имеет порядковый номер 0. Это младший разряд ячейки памяти, старший разряд имеет порядковый номер ( n -1) в n -разрядной ячейке памяти.

Содержимым любого разряда может быть либо 0, либо 1.

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

В байтовом алфавите байт является минимальной единицей информации, обрабатываемой в ЭВМ. Для записи чисел также используют 32-разрядный формат (машинное слово), 16-разрядный формат (полуслово) и 64-разрядный формат (двойное слово). Обратите внимание на нумерацию разрядов в ячейках памяти для представленных форматов данных.

Для измерения объема хранимой информации используются более крупные единицы объема памяти:

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

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

Например, в байте (8 разрядов) можно представить беззнаковые числа от 0 до 255.

Максимальное число, записанное в восьми разрядах ячейки соответствует восьми единицам и равно:

111111112 = 1*2 7 + 1*2 6 + 1*2 5 + 1*2 4 + 1*2 3 + 1*2 2 + 1*2 1 + 1*2 0 = 255.

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

Знаковые положительные числа в байте можно представить только от 0 до 127.

Старший (левый) разряд отводится под знак числа, остальные

7 разрядов под само число. Максимальное число в знаковом представлении соответствует семи единицам и равно:

11111112 = 1*2 6 + 1*2 5 + 1*2 4 + 1*2 3 + 1* 2 + 1*2 1 + 1*2 0 = 127.

Поэтому, если известно, что некоторая числовая величина является неотрицательной, то лучше рассматривать ее как беззнаковую.

Диапазон допустимых значений для знаковых типов рассчитывается по формулам:

Рассмотрим алгоритм представления в компьютере целых положительных чисел.

1. Для этого целое положительное число переводится в двоичную систему счислени

2. Полученное двоичное число записывается в 8 разрядах так, что в младшем разряде ячейки находится младший разряд числа.

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

Следующий вопрос: как представляются в компьютере целые отрицательные числа.

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

Применяются прямой, обратный и дополнительный коды чисел.

1) Разряды числа в коде жестко связаны с определенной разрядной сеткой.

2) Для записи кода знака в разрядной сетке отводится фиксированный, строго определенный разряд.

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

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

Пример. В случае, когда для записи кода выделен один байт, для числа +1101 прямой код 0,0001101, для числа -1101 прямой код 1,0001101.

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

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

Для числа +1101 прямой код 0,0001101; обратный код 0,0001101.

Для числа -1101 прямой код 1,0001101; обратный код 1,1110010.

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

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

Итак, все целые отрицательные числа в компьютере представляются дополнительным кодом.

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

Целые числа в памяти компьютера хранятся в формате с фиксированной запятой . Такие числа могут храниться в \(8\), \(16\), \(32\), \(64\)-разрядном формате.

Для целых неотрицательных чисел в памяти компьютера выделяется \(8\) ячеек (бит) памяти.

Минимальное число для такого формата: \(00000000\). Максимальное: \(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 = 255 10 .

Если целое неотрицательное число больше \(255\), то оно будет храниться в \(16\)-разрядном формате и занимать \(2\) байта памяти, то есть \(16\) бит.

Подумай! Какое самое большое число можно записать в \(16\)-разрядном формате?

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

В таблице указаны диапазоны значений для \(8\), \(16\) и \(32\)-разрядных форматов.

Скриншот 16-09-2021 004411.jpg

Для \(n\)-разрядного представления диапазон чисел можно вычислить следующим образом: от \(0\) до 2 n − 1 .

Запишем целое беззнаковое число \(65\) в восьмиразрядном представлении. Достаточно перевести это число в двоичный код.

Это же число можно записать и в \(16\)-разрядном формате.

Скриншот 16-09-2021 004807.jpg

Для целых чисел со знаком в памяти отводится \(2\) байта информации (\(16\) бит). Старший разряд отводится под знак: \(0\) — положительное число; \(1\) — отрицательное число. Такое представление числа называется прямым кодом.

Скриншот 16-09-2021 005135.jpg

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

Читайте также: