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

  • 2.3. Восьмеричная и шестнадцатеричная системы счисления

  • Восьмеричная система счисления

  • Шестнадцатеричная система счисления

  • 2.4. Перевод чисел из одной системы счисления в другую Простой случай

  • Перевод чисел из восьмеричной системы в двоичную

  • Перевод чисел из двоичной системы в восьмеричную

  • Перевод чисел из шестнадцатеричной системы в двоичную.

  • Перевод чисел из двоичной системы в шестнадцатеричную

  • Перевод чисел из восьмеричной системы счисления в шестнадцатеричную и наоборот.

  • Перевод

  • Пример

  • 2.5. Формы представления чисел в ЭВМ

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

  • 2.6. Сложение и вычитание в ЭВМ Операции над числами с фиксированной запятой

  • Архитектура ЭВМ. Курс лекций Томск 2013 2 Оглавление


    Скачать 1.9 Mb.
    НазваниеКурс лекций Томск 2013 2 Оглавление
    Дата09.09.2022
    Размер1.9 Mb.
    Формат файлаpdf
    Имя файлаАрхитектура ЭВМ.pdf
    ТипКурс лекций
    #669571
    страница2 из 14
    1   2   3   4   5   6   7   8   9   ...   14
    Деление. Деление чисел в двоичной системе производится аналогично делению десятичных чисел. Деление начинается с того, что от делимого слева отделяется минимальная группа разрядов, которая, рассматриваемая как число, превышает или равна делителю. Дальнейшие действия выполняются по обычным правилам, причем последняя целая цифра частного получается тогда, когда все цифры делимого исчерпаны. Очевидно, что достаточно рассмотреть только деление целых чисел, поскольку делимое и делитель всегда могут быть приведены к целому виду путем перенесения запятой в делимом и делителе на одинаковое количество разрядов вправо и дописывания необходимого количества нулей.
    Пример. Разделить (X)
    2
    = 11011,11 на число (Y)
    2
    = 10,111
    Имеем:
    11011110 10111 10111 1001– частное
    100110 10111 1111 - остаток


    101,1101 1001,101 1011101 0000000 1011101 1011101 0000000 0000000 1011101 1101111111001
    ×

    9
    Таким образом, выполнение арифметических операций в двоичной системе счисления достаточно просто (особенно при выполнении операций сложения, вычитания и умножения). Благодаря этому, применение двоичной системы в вычислительных машинах позволяет упростить схемы устройств, в которых осуществляются арифметические операции над числами.
    2.3. Восьмеричная и шестнадцатеричная системы счисления
    Причины, по которым данные системы счисления широко используются в литературе
    (особенно, в документации) по вычислительной технике, будут обсуждены несколько позднее; здесь приведем лишь основные сведения об этих системах.
    Восьмеричная система счисления. Алфавит системы образуют цифры
    {0, 1, 2, 3, 4, 5, 6, 7}.
    Основание системы (восемь) записывают как 10. Ниже представлены таблицы сложения и умножения в восьмеричной системе, а так же примеры выполнения арифметических операций.
    Таблица сложения Таблица умножения
    +
    0 1
    2 3
    4 5
    6 7 10
    ×
    0 1
    2 3
    4 5
    6 7
    10 0
    0 1
    2 3
    4 5
    6 7 10 0
    0 0
    0 0
    0 0
    0 0
    0 1
    1 2
    3 4
    5 6
    7 10 11 1
    0 1
    2 3
    4 5
    6 7
    10 2
    2 3
    4 5
    6 7 10 11 12 2
    0 2
    4 6
    10 12 14 16 20 3
    3 4
    5 6
    7 10 11 12 13 3
    0 3
    6 11 14 17 22 25 30 4
    4 5
    6 7 10 11 12 13 14 4
    0 4
    10 14 20 24 30 34 40 5
    5 6
    7 10 И 12 13 14 15 5
    0 5
    12 17 24 31 36 43 50 6
    6 7 10 11 12 13 14 15 16 6
    0 6
    14 22 30 36 44 52 60 7
    7 10 11 12 13 14 15 16 17 7
    0 7
    16 25 34 43 52 61 70 10 10 11 12 13 14 15 16 17 20 10 0
    10 20 30 30 50 60 70 100
    Примеры выполнения арифметических операций. а) сложение
    327,71102 35,67735 365,61037
    +
    б) вычитание
    11076,01 705,62 10170,17

    в) умножение
    173,263 16,35 11 40577 56 2031 1344 062 1732 63 3366,52307
    ×
    г) деление
    3366,52307 16,35 1635 173,263 1531 5 1451 3 60 22 53 27 5 033 3 472 1 3410 1 2656 5327 5327 0000







    10
    Шестнадцатеричная
    система
    счисления. Алфавит системы включает шестнадцать символов
    {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, А, В, С, D, Е, F}.
    Основание системы (шестнадцать) записывается как 10. Ввиду большого объема представление таблиц сложения и умножения здесь опускается; их нетрудно составить по образцу таблиц для восьмеричной системы.
    2.4. Перевод чисел из одной системы счисления в другую
    Простой случай. Наиболее прост перевод чисел из р-ичной позиционной системы в q-ичную, если имеет место соотношение р=q k
    (k- целое положительное число).
    В этом случае перевод из р-ичной системы счисления в q-ичную производят "поразрядно", заменяя каждую р-ичную цифру равным ей k-разрядным числом, записанным в q-ичной системе счисления.
    Перевод из q-ичной системы в р-ичную при этом производят следующим образом.
    Двигаясь от запятой вправо и влево, разбивают q-ичную запись числа на группы по k цифр.
    Если при этом самая левая или самая правая группы окажутся неполными, к ним приписывают соответственно слева и справа столько нулей, чтобы каждая из них содержала k цифр. После этого каждую группу q-ичныx цифр заменяют одной р-ичной цифрой, равной числу, обозначенному этой группой q-ичных цифр.
    Рассмотрим процесс перевода чисел между системами счисления с основаниями 2, 8
    (2 3
    ) и 16 (2 4
    ). Алгоритм перевода основан на использовании следующей таблицы:
    2-я система
    8-я система
    16-я система
    0000 0
    0 0001 1
    1 0010 2
    2 0011 3
    3 0100 4
    4 0101 5
    5 0110 6
    6 0111 7
    7 1000 10 8
    1001 11 9
    1010 12
    A
    1011 13
    B
    1100 14
    C
    1101 15
    D
    1110 16
    E
    1111 17
    F
    Перевод_чисел_из_восьмеричной_системы_в_двоичную'>Перевод чисел из восьмеричной системы в двоичную. Каждая цифра восьмеричного числа заменяется соответствующей двоичной триадой (трехзначным числом).
    Пример. 273,54 8
    = (010) (111) (011), (101) (100)
    2
    =10111011,1011 2
    Перевод чисел из двоичной системы в восьмеричную. Искомое двоичное число делится на двоичные триады согласно приведенным выше правилам, а затем каждая триада заменяется соответствующей восьмеричной цифрой.
    Пример. 11011,0011 2
    = 11 (011),(001) 1 2
    = (011) (011),(001) (100)
    2
    = 33,43 8
    Перевод чисел из шестнадцатеричной системы в двоичную. Каждая цифра шестнадцатеричного числа заменяется соответствующей двоичной тетрадой
    (четырехзначным двоичным числом).

    11
    Пример. А5,В1 16
    = (1010) (0101),(1011) (0001)
    2
    = 10100101,10110001 2
    Перевод чисел из двоичной системы в шестнадцатеричную. Искомое двоичное число делится на двоичные тетрады, а затем каждая тетрада заменяется соответствующей шестнадцатеричной цифрой.
    Пример.
    1001110,011011 2
    = 100 (1110),(0110) 11 2
    = (0100) (1110),(0110) (1100)
    2
    = 4Е,6С
    16
    Перевод чисел из восьмеричной системы счисления в шестнадцатеричную и
    наоборот. Такой перевод проще всего осуществлять, используя в качестве промежуточного этапа перевод в двоичную систему счисления. То есть:
    8 → 16 можно заменить 8 → 2 → 16 16 → 8 можно заменить 16 → 2 → 8
    Общй случай. Перевод числа из р-ичной в q-ичную систему счисления, когда р ≠ q k
    , производится отдельно для целой и дробной частей числа. Теоретическое обоснование приводимых алгоритмов опустим.
    Перевод
    целой части числа. Число записывается в р-ичной системе счисления.
    Производится деление в р-ичной системе целой части подвергающегося переводу числа на q; в остатке получается число, равное последней цифре искомой q-ичной записи.
    Полученное частное снова делится на q, в остатке получается число, равное предпоследней цифре q-ичной записи, и т.д. Процесс повторяется до тех пор, пока в частном не будет получено число, меньшее, чем q, которое равно первой цифре q-ичной записи.
    Пример. Перевод числа 191 из десятичной в восьмеричную и шестнадцатеричную системы счислений.
    Итоговый результат: 191 10
    = 277 8
    = BF
    16
    Перевод дробной части числа. Число q записывают в р-ичной системе счисления.
    Умножают в р-ичной системе дробь на q. Целая часть произведения равна первой цифре q-ичной записи дроби. Дробную часть произведения снова умножают на q. Целая часть произведения равна следующей цифре q-ичной записи дроби. Процесс продолжают либо до тех пор, пока он не закончится получением целого произведения, либо до тех пор, пока не получат требуемого количества цифр q-ичной записи дроби.
    Пример. Перевод десятичного числа 0,6875 в восьмеричную и шестнадцатеричную системы.
    Итоговый результат: 0,6875 10
    = 0,54 8
    = 0,В
    16
    Комбинируя приведенные правила, можно без труда произвести перевод числа из любой позиционной системы счисления в любую другую позиционную систему счисления. а) перевод в восьмеричную систему:
    0 6875 8
    5 5000 8
    4 0000 а) перевод в шестнадцатеричную систему:
    0 6875 16
    В 0000 б) перевод в шестнадцатеричную систему:
    191 16 16 11 10
    = B
    16 31 16 15 10
    = F
    16

    — а) перевод в восьмеричную систему
    191 8 16 23 8 31 16 2 24 7 7




    12
    В силу того, что выполнение деления в системах счисления, отличных от десятичной, для нас непривычно, перевод из других систем счисления в десятичную часто производят с помощью формулы (**). В ее правой части р-ичные цифры, само число р и показатели степеней записывают в десятичной системе счисления, после чего вычисляют значение полученного выражения уже по правилам действий, принятых в десятичной системе.
    Пример. Перевести число 277,54 8
    в десятичную систему. По формуле (**):
    277,54 8
    = (2·10 2
    +7·10 1
    +7·10 0
    +5·10
    -1
    +4·10
    -2
    )
    8
    =
    (2·8 2
    +7·8 1
    +7·8 0
    +5·8
    -1
    +4·8
    -2
    )
    10
    = (2·64+7·8+7+5/8+4/64)
    10
    =191,6875 10
    Итак, восьмеричное число 277,54 равно десятичному числу 191,6875.
    2.5. Формы представления чисел в ЭВМ
    Обычно числа в машинах представляются в одной из двух форм: с фиксированной запятой или с плавающей запятой.
    Представление чисел с фиксированной запятой. В ячейке памяти ЭВМ число записывается последовательностью изображающих его двоичных цифр. Количество разрядов, отведенное для записи дробной и целой частей чисел, строго фиксировано. Это позволяет запятую в изображении числа опускать. Для изображения знака числа обычно отводится самый левый разряд ячейки, причем "плюс" кодируется двоичной цифрой 0, а "минус" - 1.
    На практике при представлении чисел с фиксированной запятой запятая "закрепляется" после самого правого разряда числа, то есть все числа целые.
    При данном представлении может быть записано число N такое, что 0 ≤ |N| ≤ 2
    n-1
    -1
    Очевидно, что при выполнении арифметических операций над числами с фиксированной запятой может произойти переполнение разрядной сетки, то есть превышение значения результата верхней границы – 2
    n-1
    -1.
    Представление чисел в форме с плавающей запятой. При форме представления с плавающей запятой число N считают приведенным к виду
    N = m·P
    n
    , (***) где:
    m - число с запятой, фиксированной после определенного разряда, называемое
    мантиссой
    ,
    n - целое число, называемое порядком,
    Р - основание системы счисления.
    Запятую в мантиссах, как правило, фиксируют перед старшим (цифровым) разрядом, то есть в качестве мантисс берут правильные дроби. Это связано с удобством умножения мантисс (их произведение будет при этом также правильной дробью).
    Если в записи (***) старшая цифра мантиссы отлична от нуля, то число N называют нормализованным (в противном случае - ненормализованным). Таким образом, нормализованными являются числа, для которых 1/P ≤ |m| < 1.
    Пример. Десятичное число 25,2 в форме с плавающей запятой (при запятой мантиссы, фиксированной перед старшим разрядом) может иметь любой из видов
    0,252 ·10 2
    0,0252·10 3
    0,00252·10 4
    и т.д. Нормализованной является только запись 0,252·10 2
    , а все остальные являются ненормализованными.
    Знак 2
    n-2 2
    n-3 2
    1 2
    0 n - разрядная ячейка n-1 n-2 n-3 1 0

    13
    Ниже изображено возможное представление нормализованных чисел с плавающей запятой в 32-х разрядной сетке ЭВМ.
    При обработке в ЭВМ чисел с плавающей запятой возможно переполнение разрядной сетки, которое заключается в том, что в результате какой-либо операции возникает число, имеющее порядок с большей разрядностью, чем допустимая при представлении порядка в машине. Кроме того, в машине возможно появление машинных нулей, т.е. нормализованных чисел, отличных от нуля, но имеющих порядок, меньший самого малого порядка, представимого в разрядной сетке. Обычно машинные нули записываются в виде нулевой мантиссы и нулевого порядка.
    Если количество разрядов мантиссы больше количества, выделенного для ее представления в разрядной сетке ЭВМ, избыточные младшие разряды отбрасываются, возможно, с округлением последнего из оставшихся.
    Диапазон нормализованных двоичных чисел с плавающей запятой, представленных в разрядной сетке ЭМВ, если запятые в мантиссах фиксированы перед старшими разрядами, оценивается неравенствами
    2
    -2s
    ≤ |N| ≤ (1- 2
    -k
    ) ·2
    s-1
    , где N - исходное число, k- количество цифровых разрядов мантиссы, s- количество цифровых разрядов порядка.
    2.6. Сложение и вычитание в ЭВМ
    Операции над числами с фиксированной запятой. Операция вычитания в машине реализуется достаточно сложно, так как при этом часто возникает необходимость "занимания" единиц в соседнем старшем разряде. Если же в соседнем старшем разряде этого сделать нельзя, необходим заем в следующем по старшинству разряде и т.д. Если же уменьшаемое меньше вычитаемого, этот процесс будет продолжаться до самого старшего разряда, а затем нужно вычитание делать заново, поменяв знак разности и вычитаемое и уменьшаемое местами.
    Упрощение операции вычитания реализуется сведением ее к операции сложения, для чего применяют специальные способы представления отрицательных чисел.
    Далее рассматриваются целые двоичные числа вида
    N = ± a n-2
    a n-3
    a
    0
    , записанные в ячейку памяти ЭВМ, где n – разрядность (количество разрядов) ячейки памяти.
    Прямой код. В ячейке число N представляется (кодируется) следующим образом:
    Запись [N]
    пр называется прямым кодом числа N.
    0
    a
    1
    a
    2
    a n
    , N ≥ 0
    [N]
    пр
    =
    1 a
    1
    a
    2
    a n
    , N ≤ 0
    знак мантиссы (знак числа) знак порядка порядок мантисса
    31 30 29 28 27 26 25 24 23 22 0 а
    i
    = 0, 1 , i
    = 0,…,
    n-2 – цифры числа,

    14
    Пример. Записать в прямом коде двоичные числа X = 101110 и Y = - 101110:
    [X]
    пр
    = 0101110
    [Y]
    пр
    = 1101110
    Достоинство прямого кода состоит в том, что в нем достаточно просто реализуются алгоритмы выполнения «длинных» операций – умножения и деления.
    Недостатками прямого кода являются:
    1)
    двойное представление нуля:
    0 0 0 0 0 0 0 0 = + 0 1 0 0 0 0 0 0 0 = – 0 , которое должно быть учтено либо аппаратными, либо программными средствами;
    2)
    представление операнда в виде двух частей (знака и значащей компоненты) приводит к достаточно сложным алгоритмам операций сложения/вычитания в процессоре.
    Дополнительный код
    Дополнительный код [N]
    д целого положительного числа N совпадает с его прямым кодом
    Дополнительный код целого отрицательного числа получается в результате следующей последовательности действий:
    1.
    дополнение искомого числа до модуля (отсюда и название кода);
    2.
    запись единицы в знаковый разряд (признак того, что число отрицательное).
    Пример. Записать в дополнительном коде двоичные числа
    X=101001 2
    и Y = –101001 2
    Пусть разрядность ячейки памяти равна 8-ми разрядам. Тогда модуль М будет иметь значение М=2 7
    =10000000 2
    =200 8
    Очевидно, что [X]
    д
    =51 8
    = 00101001 2
    Определим [Y]
    д
    (для простоты расчеты будем вести в 8-й системе счисления).
    Поскольку Y - отрицательное число:
    Шаг 1. Вычисление дополнения: 200 8
    – 51 8
    = 127 8
    = 1010111 2
    Шаг 2. Запись 1 в знаковый разряд. Окончательно [Y]
    д
    =11010111 2
    Легко убедиться, что [X]
    д
    + [Y]
    д
    = 0.
    Обратный код
    Обратный код [N]
    обр целого положительного числа N
    совпадает с его прямым кодом.
    Обратный код целого отрицательного числа получается в результате следующей последовательности действий:
    1.
    инвертирование - замена в цифровой части числа каждой единицы на нуль, а нуля на единицу;
    2.
    запись единицы в знаковый разряд (признак того, что число отрицательное).
    Пример. Записать двоичные числа в обратном коде (ячейка 8-ми разрядная):
    X = 101001. [X]
    обр
    = 00101001
    Y = - 101001.
    Шаг 1. Инвертирование: 101001 → 010110
    Шаг 2. Запись 1 в знаковый разряд. Окончательно [Y]
    обр
    = 1010110
    Из примеров легко видеть, что [Y]
    д
    = [Y]
    обр
    + 1.
    Из приведенных правил следует, что:
    1.
    Прямой, обратный и дополнительный коды для положительного числа совпадают.
    2.
    В прямом и обратном коде нуль имеет два представления - "положительный"
    (00000000 = + 0) и "отрицательный" (10000000= - 0) нуль; в дополнительном коде нуль имеет только одно, "положительное" представление;
    3.
    Для получения дополнительного кода отрицательного числа к его обратному коду нужно прибавить единицу;

    15 4.
    Для преобразования дополнительного кода отрицательного числа в исходное представление (прямой код отрицательного числа) необходимо из дополнительного кода вычесть единицу и инвертировать значащие цифры
    (разряды).
    Алгебраическое сложение. Используя обратный и дополнительный коды, операция алгебраического сложения сводится к арифметическому сложению кодов чисел, которое распространяется и на разряды знаков, которые рассматриваются как разряды целой части числа, при этом отрицательные числа представляются в обратном или дополнительном кодах.
    Ограничимся рассмотрением примеров с использованием дополнительных кодов отрицательных чисел. При выполнении операции сложения единица переноса из знакового разряда отбрасывается.
    Пример 1. X = 60 10
    = 74 8
    = 111100 2
    ,
    Y =
    – 41 10
    = – 51 8
    = – 101001 2
    . В условии
    |X|>|Y|.
    Порядок выполнения операции X-Y:
    1.
    Представление первого операнда как положительного числа в прямом коде –
    X=00111100.
    2.
    Представление второго операнда как отрицательного числа в дополнительном коде -
    [Y]
    д
    =11010111 2
    3.
    Выполнение операции сложения Z = X + [Y]
    д
    :
    Результат: Z = 00010011 2
    = 23 8
    = 19 10
    Пример 2. X = 34 10
    = 42 8
    = 100010 2
    ,
    Y =
    – 41 10
    = – 51 8
    = – 101001 2
    . В условии
    |X|<|Y|.
    Порядок выполнения операции X-Y:
    1.
    Представление первого операнда как положительного числа в прямом коде –
    X=00100010.
    2.
    Представление второго операнда как отрицательного числа в дополнительном коде - [Y]
    д
    =11010111 2
    3.
    Выполнение операции сложения Z = X + [Y]
    д
    :
    Результат [Z]
    д
    =
    11111001. После преобразования получаем
    Z = 10000111 2
    = – 7 8
    = –7 10
    Пример 3. X = – 14 10
    = – 16 8
    = – 1110 2
    ,
    Y =
    – 41 10
    = – 51 8
    = – 101001 2
    В условии
    X и Y – отрицательные числа.
    Порядок выполнения операции X-Y:
    1.
    Представление первого операнда как отрицательного числа в дополнительном коде – [X]
    д
    = 11110010.
    2.
    Представление второго операнда как отрицательного числа в дополнительном коде - [Y]
    д
    =11010111 2
    3.
    Выполнение операции сложения Z = [X]
    д
    + [Y]
    д
    :
    00100010 11010111 11111001
    +
    00111100 11010111 00010011
    +

    16
    Результат [Z]
    д
    =
    11001001.
    После преобразования получаем Z = 10110111 2
    = – 67 8
    = –55 10
    1   2   3   4   5   6   7   8   9   ...   14


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