Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы 14-18.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
98.82 Кб
Скачать
    1. Двоичное кодирование числовой информации.

Целые числа:

Стандартно на хранение одного целого числа отводится 2 байта (16 бит) информации. С помощью 2 байт можно закодировать 216 = 65536 чисел. Но так как целые числа бывают отрицательные и положительные, то 65536 делим пополам. Таким образом, диапазон целых чисел – [-32768; 32767].

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

Пример: 17510

17510=128+32+8+4+2+1=101011112

0000 0000 1010 1111 или 00АF – прямой код (машинное представление числа 175).

Чтобы получить двоичное представление отрицательного целого числа, нужно: 1) получить прямой код модуля этого числа; 2) получить обратный код заменой нулей на единицы и единиц на нули в прямом коде; 3) получить дополнительный код прибавлением к обратному единицы.

Пример: - 17510

  1. 0000 0000 1010 1111 – прямой код числа 175

  2. 1111 1111 0101 0000 – обратный код

  3. 1111 1111 0101 0001 – дополнительный код (машинное представление числа 175).

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

Пример: дано шестнадцатеричное представление целого числа ABCD. Найти это число.

ABCD16 = 10101011110011012;

Так как в старшем разряде стоит 1, то данное число отрицательное, а код дополнительный.

1010101111001101 – дополнительный код

1010101111001100 – обратный код

0101010000110011 – прямой код

1010100001100112 = 214 + 212 +210 + 25 + 24 + 21 + 20 = 16384 + 4096 + 1024 + 32 + 16 + 2 + 1 = 21555

Ответ: - 21555.

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

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

Пример: 175 – 123 = 175 + (- 123)

17510 = 101011112

0000 0000 1010 1111 – прямой код

12310 = 11110112

0000 0000 0111 1011 – прямой код

1111 1111 1000 0100 – обратный код

1111 1111 1000 0101 – дополнительный код

0000 0000 1010 1111

1111 1111 1000 0101

0000 0000 0011 0100 = 32 + 16 + 4 = 52 (Т.к. в старшем разряде 0, то число положительное).

Вещественные числа.

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

где m – мантисса числа,

P – основание системы счисления,

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

При работе с числами в языках программирования и вычислительных системах используется экспоненциальная форма записи:

где Е – десятичное основание системы.

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

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

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

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

Пример: получить машинное представление числа 250,1875.

    1. Переведем число в двоичную систему счисления с 24 значащими цифрами 250,187510 = 11111010,00110000000000002

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

    3. Вычислим машинный порядок: Pm = 1000000 + 1000 = 1001000.

    4. Запишем представление числа в 4-байтовой ячейке памяти с учетом знака числа: 0 10010001 11110100011000000000000 или в шестнадцатеричной форме 48FA3000.

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

  1. Перейдем к двоичному представлению: 110010011000000100010000000000002

  2. Т.к. в старшем бите стоит 1, то число отрицательное. Получим порядок числа: Р = 1001001 – 1000000 = 10012 = 910.

  3. Запишем в форме нормализованного двоичного числа с плавающей точкой с учетом знака числа: -0, 100000010001000000000000 * 21001.

  4. В естественной форме число имеет вид: -100000010,0012.

  5. Переведем число в десятичную систему счисления: -100000010,0012 = = -258,12510

Сложение чисел с плавающей запятой выполняется по следующему алгоритму:

  1. Представить числа А и В в нормализованном виде, записав отдельно значения мантисс и порядков.

  2. Выровнять порядки по числу с большим порядком.

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

  4. Сложить числа.

  5. Нормализовать сумму, оставив число цифр в мантиссе таким, как у числа, порядок которого не изменялся.

0