Главная страница
Навигация по странице:

  • 1. Представление целых чисел в формате с фиксированной запятой

  • Целые числа без знака.

  • Целые числа со знаком: прямой, обратный и дополнительный коды.

  • 3.2. Представление вещественных чисел в формате с плавающей запятой

  • Лабораторная работа №1.2 Подробная справка (1). Компьютерное представление чисел


    Скачать 83 Kb.
    НазваниеКомпьютерное представление чисел
    Дата22.02.2019
    Размер83 Kb.
    Формат файлаdoc
    Имя файлаЛабораторная работа №1.2 Подробная справка (1).doc
    ТипДокументы
    #68552

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

     

     Информация в памяти ЭВМ записывается в форме цифрового двоичного кода. С этой целью ЭВМ содержит большое количество ячеек памяти и регистров (от лат. regestum – внесенное, записанное) для хранения двоичной информации. Ячейка – это часть памяти, вмещающая в себя информацию, доступную для обработки отдельной командой процессора. Наибольшую последовательность бит, которую компьютер может обрабатывать как единое целое (содержимое ячейки памяти), называют машинным словом.

    Элементарная ячейка памяти ЭВМ имеет длину 8 бит (1 байт). Каждый байт имеет свой номер (его называют адресом). Длина машинного слова зависит от разрядности процессора и может быть равной 16, 32, 64 битам и т.д. Адрес машинного слова в памяти компьютера равен адресу младшего байта, входящего в это слово.  Машинное  слово, состоящее из 16 бит (2-х байт) представлено на рис.1. Разряды нумеруются справа налево, начиная с 0. Самый левый является старшим разрядом (на рисунке  с номером 15), самый правый – младшим (на рисунке с номером 0).

     

    15

    14

    13

    12

    11

    10

    9

    8

    7

    6

    5

    4

    3

    2

    1

    0

     0  

    1

    1

    0

    1

    1

    1

    0

    0

    1

    1

    0

    1

    1

    0

    1

    бит

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    байт

    байт

    Слово

                         Рис. 1. Бит, байт, слово

     

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

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

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

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

     

      1. Представление целых чисел в формате с фиксированной запятой

     

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

    Так в n-разрядной ячейке может храниться 2n различных значений целых чисел. Так в 8-разрядной ячейке может храниться 28=256 различных значений, в 16-разрядной – 216=65536 различных значений.

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

      

    Целые числа без знака. Обычно занимают в памяти компьютера один или два байта. Максимальное значение целого числа без знака (положительного числа) достигается в случае, когда во всех ячейках  хранятся единицы. Для n-разрядного представления оно будет равно .Для 8-разрядной ячейки максимальное значение целого положительного числа достигается в  случае, когда во всех ячейках хранятся единицы и равно. Минимальное число соответствует восьми нулям, хранящимся в восьми битах ячейки памяти, и равно нулю. Следовательно, в 8-разрядной ячейке диапазон изменения целых  чисел без знака: от 0 до 255. В 16-разрядной ячейке - от 0 до 65535 (всего 65536 значений).

    Так, число 111000012 будет храниться в 8-разрядной ячейке памяти следующим образом:

    1

    1

    1

    0

    0

    0

    0

    1

     

    В 16-разрядном представлении число 200610=111110101102 будет храниться следующим образом:

    0

    0

    0

    0

    0

    1

    1

    1

    1

    1

    0

    1

    0

    1

    1

    0

     

       Итак, чтобы получить внутреннее представление целого числа без знака А, хранящегося в n-разрядном машинном слове, необходимо:

    1)   перевести число А в двоичную систему счисления;

    2)   полученный результат дополнить слева незначащими нулями до n разрядов.

       

    Целые числа со  знаком: прямой, обратный и дополнительный коды.Целые числа со знаком обычно занимают в памяти компьютера один, два или четыре байта.  Для хранения целых чисел со знаком старший (левый) разряд в машинном слове отводится под знак числа (если число положительное, то в знаковый разряд записывается ноль, если число отрицательное – единица). Ровно половина из всех 2n  чисел будут отрицательными; учитывая необходимость нулевого значения, положительных будет на единицу меньше.

      

    Максимальное положительное число (с учетом выделения одного разряда на знак) для целых чисел со знаком в n-разрядном представлении равно -1. Минимальное отрицательное  число (с учетом выделения одного разряда на знак) для целых чисел со знаком в n-разрядном представлении равно -.

      

    Диапазоны значений целых чисел со знаком:

             в 8-разрядной ячейке: от -128 до 127;

             в 16-разрядной ячейке: от -32 768 до 32 767;

             в 32-разрядной ячейке: от -2 147 483 648 до 2 147 483 647.

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

       Прямой код целого положительного числа может быть получен следующим образом: число переводится в двоичную систему счисления, а затем его двоичную запись слева дополняют необходимым количеством нулей в соответствии с разрядностью машинного слова. Например, прямой код числа 3710=1001012 в 16-разрядной ячейке будет иметь вид 0000000000100101.

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

    1)   модуль числа записать в прямом коде в n двоичных разрядах;

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

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

     

       Например, внутреннее представление целого отрицательного числа -1607 в 16-разрядной ячейке запишется следующим образом: 1111 1001 1011 1001. Так как:

    1)     а) -1607=160710=110010001112

       б) прямой код в 16-разрядной ячейке:

              0000 0110 0100 0111

    2)  обратный код:

              1111 1001 1011 1000

       3) дополнительный код (результат прибавления 1):

               1111 1001 1011 1001 – это внутренне двоичное представление числа (-1607).

     

     3.2. Представление вещественных  чисел в формате  с плавающей запятой

     

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

    Форма с плавающей точкой использует представление вещественного числа А в виде произведения мантиссы m на основание системы счисления q в некоторой целой степени p, которую называют порядком:

    А=m x qp

       Например, число 139,76 можно записать в виде: 0,13976х103. Здесь m=0,13976 – мантисса, p=3 – порядок. Порядок указывает, на какое количество позиций и в каком направлении должна «переплыть», т.е. сместиться десятичная  в мантиссе. Отсюда название «плавающая точка». Однако справедливы и следующие равенства:

    139,76=13,976х101 = 1,3976х102 = 0,013976х104 = 13976 х10-2

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

    0.1q  m< 1q ,

    то есть мантисса меньше единицы и первая значащая цифра - не ноль. Следовательно, для рассмотренного числа нормализованным представлением будет: 0,13976х103.

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

       Пусть в памяти компьютера вещественное число представляется в форме с плавающей точкой в двоичной системе счисления (q=2) и занимает ячейку размером 4 байта. В ячейке должна содержаться следующая информация о числе: знак числа, порядок и значащие цифры мантиссы. Вот как эта информация располагается в ячейке:


     маш. порядок

    М   А   Н

    Т   И   С

    С  А
     

       1-й байт                        2-й байт            3-й байт               4-й байт      

     

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

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

     

    Машинный

    порядок

    0

    1

    2

    3



    64

    65



    125

    126

    127

    Математический

    порядок

    -64

    -63

    -62

    -61



    0

    1



    61

    62

    63

     

    Если обозначить машинный порядок Мq, а математический q, то связь между ними выразится формулой:

    Мq = q + 64

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

    Мq = q + 10000002

     

    При выполнении вычислений с плавающей точкой процессор это смещение учитывает.

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

    1)      Перевести модуль данного числа в двоичную систему счисления;

    2)      Записать полученное двоичное число в нормализованном виде;

    3)      Определить машинный порядок с учетом смещения;

    4)      Учитывая знак заданного числа (0 – положительное; 1 – отрицательное), записать его представление в памяти ЭВМ.

     

    Например, запишем внутреннее представление числа 139,76 в форме с плавающей точкой в 4-х байтовой ячейке:

    1)   Переведем десятичное 139,76 и запишем его 24-значащими цифрами:

    139,7610 = 10001011,11000010100011112

        

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

    10001011,11000010100011112 = 0,1000101111000010100011112 х101000,    

      где 0,1000101111000010100011112 – мантисса;

         10 – основание системы счисления      (210=102);

         1000 – порядок (810=10002).

      

    3)  Определим машинный порядок:

    Mq2 = 1000 + 1000000 = 1001000

    4)     Запишем представление числа в ячейке памяти:


    01001000

    10001011

    11000010

    10001111
     

    Для того чтобы получить внутренне представление отрицательного числа -139,7610  достаточно в полученном выше представлении заменить в разряде знака числа 0 на 1. Никакого инвертирования, как для отрицательных целых чисел, здесь не происходит.

     

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

    • 8 бит: 0…28–1 = 0…255

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

    • 8 бит: –27…–1 0…+27–1 = –128…+127

    1. Определить диапазон представления вещественных чисел в формате с плавающей запятой

    • 32 бита (8 бит порядок, 24 бита мантисса):

      12–(2^7–2)…22+(2^7–1) = 2–126…2+128 = 1,110–38…3,410+38

    • (11 бит порядок, 53 бита мантисса):

      12–(2^10–2)…22+(2^10–1) = 2–1022…2+1024 = 2,210–308…1,710+38

    • (15 бит порядок, 65 бита мантисса):

      12–(2^14–2)…22+(2^14–1) = 2–16.382…2+16.384 = 3,310–4932…1,110+4932

    значения 1.000…2111… – зарезервированы стандартом IEEE (ANSI) для обозначения .

    значения +1.000…2000… – зарезервированы стандартом IEEE (ANSI) для обозначения 0.

    значения –1.000…2000… – зарезервированы стандартом IEEE (ANSI) для обозначения –0.

    значения +1.xxx…2111… – зарезервированы стандартом IEEE (ANSI) для обозначения NaN.

    1. Представить числа в формате целого числа с фиксированной запятой 8 бит:

    • +63: прямой код – [0011 1111]

    • –63: обратный код – [1100 0000], дополнительный код – [1100 0001].

    1. Записать числа по их внутреннему представлению в ЭВМ в десятичной системе счисления:

    • [0111 1110] прямой код [0111 11102] = +126

    • [1100 0000] дополнительный код [0011 1111+1] = [0100 00002] = –64

    1. Сложить два числа в дополнительном восьмиразрядном двоичном коде:

    • 30 и –13

      +30: прямой код – [0001 1110],

      –13: прямой код – [0000 1101], обратный код – [1111 0010], дополн. код – [1111 0011].

      прямой код – [0001 0001] = 1710

    1. Представить числа +127,125 и –127,125 в формате вещественного числа с плавающей запятой 32 бита.

      Структура представления чисел в ЭВМ:



    • +125,125: прямой код 111 1101,001 = 1,1111 0100 126,

      смещенный порядок 6+(27–1) = 6+127 = 133 = 1000 01012





    1. Записать число в десятичной системе счисления по его внутреннему представлению в ЭВМ:

    • 01000010011111111000000000000000

    0 10000100 11111111000000000000000



    Смещенный порядок – [100001002] = [13210], несмещенный порядок – [132-127] = [+5].

    Число – [+1,1111 11112+5] = [+111111,1112] = [63,87510].


    написать администратору сайта