Используя команду mov напишите программу которая заполнит регистры так как на рисунке


Подборка по базе: 7. Практическая работа №2 Раздел программы 2.4.2. (1).docx, КОНТРОЛЬНАЯ РАБОТА ПРОЕКТ СОВМЕСТНОЙ ДЕЯТЕЛЬНОСТИ.docx, Курсовая работа.docx, письменная работа правоведение.docx, Самостоятельная работа к теме 2.1.5..docx, Практическая работа № 2.docx, дипломная работа.docx, Практическая работа 4.docx, История Моя Работа.doc, проверочная работа по математике за 3 четверть 1 класс.docx


Практическая работа №1

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

Знакомство с программой «ЛамПанель»

Программа «ЛамПанель» – это модель процессора, который управляет ламповой панелью, то есть, может с помощью специальных команд зажигать и гасить определенные лампочки.

Процессор обрабатывает данные, используя специальные сверхбыстродействующие ячейки собственной памяти – регистры. В этой работе мы будем использовать только четыре 16-битных регистра общего назначения, которые называются R0, R1, R2 и R3. В области 1 на рисунке вы видите двоичные значения этих регистров (показаны черным цветом), шестнадцатеричные (синий цвет) и десятичные, без учета знака (зеленый цвет) и со знаком (коричневый цвет).

Область 2 – это текстовый редактор, в котором набирается программа для процессора на специальном языке, который называется языком ассемблера. Для того, чтобы программа выполнилась, нужно нажать клавишу F9 (выполнение без остановки) или F8 (выполнение по шагам). Чтобы программа остановилась, процессор должен выполнить команду STOP. Таким образом, простейшая программа состоит из одной команды STOP.

Для того, чтобы записать число в регистр, используют команду MOV (от англ. move – переместить). Числа записываются в шестнадцатеричной системе счисления. Например, команда

MOV 12, R0

запишет число 1216 = 18 в регистр R0. Каждая команда записывается в отдельной строке. Поэтому полная программа будет выглядеть так:

MOV 12, R0

STOP

Для того, чтобы добавить число к регистру, применяют команду ADD (от англ. add – сложить). Например, команда

ADD 15, R0

добавляет число 1516 = 23 к регистру R0. Есть и аналогичная команда вычитания – SUB (от англ. subtract– вычесть). Нам будет нужна еще одна команда:

NOT R0

которая выполняет инверсию всех битов регистра, то есть меняет все нули на единицы, а единицы – на нули.

Задание на практическую работу

  1. Запустите тренажер «Лампанель».
  2. Используя команду MOV, напишите программу, которая заполнит регистры так, как на рисунке:

Не забудьте закончить программу командой STOP. Выполните программу.

Программа:

MOV F000, R0

MOV FF00, R1

MOV FFF0, R2

MOV FFFF, R3

  1. Запишите, какие десятичные числа были только что записаны в регистры:

    Регистр Десятичные значения
    без учета знака с учетом знака
    R0 61440 -4096
    R1 65280 -256
    R2 65520 -16
    R3 65535 -1
  2. Выполните программу

sub 1, R0

not R0

stop

при различных начальных значениях регистра R0 и запишите десятичные значения, полученные в R0 после выполнения программы:

До После
без учета знака с учетом знака
5 65531 -5
10 65520 -16
25 65499 -37

Какую операцию выполняет этот алгоритм? Найдите описание этого алгоритма в учебнике.

Ответ:

сложение

  1. При тех же начальных значениях регистра R0 выполните программу

not R0

add 1, R0

stop

и заполните таблицу:

До После
без учета знака с учетом знака
5 65531 -5
10 65520 -16
25 65499 -37

Сделайте выводы, сравнивая результаты пп. 4 и 5.

Выводы:

ОНИ ОДИНАКОВЫ

  1. Используя программу «ЛамПанель», вычислите арифметические выражения и запишите результаты в таблицу:
Выражение Результат
без учета знака с учетом знака
65530 + 9 3 3
32760 + 9 32769 -32767
8 — 10 2 2

Замечание: в программу нужно вводить числа в шестнадцатеричной системе счисления!

Подсказка: 65535=FFFF16, 32767=7FFF16

Объясните полученные результаты:

ВО ВТОРОМ СЛУЧАЕ ПРОИЗОШЛО ПЕРЕПОЛНЕНИЕ

Практическая работа №2
Арифметические операции с целыми числами

З накомство с программой «ЛамПанель»

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

  • бит C (от англ. carry – перенос) установлен (равен 1), если произошел перенос; в остальных случаях сброшен (равен 0);
  • бит Z (от англ. zero– ноль) установлен, если результат последней операции – ноль; в остальных случаях сброшен;
  • бит N (от англ. negative– отрицательный) установлен, если результат последней операции отрицательный; в остальных случаях сброшен.
  • бит O (от англ. overflow– переполнение) установлен, если в результате последней операции произошло переполнение и результат неверен; в остальных случаях сброшен.

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

JNZ метка

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

MOV 0, R0 ; начальное значение суммы

MOV 5, R1 ; количество шагов цикла

m: ; метка обозначает начало цикла

ADD R1, R0 ; R0:= R0 + R1

SUB 1, R1 ; уменьшить R1 – оставшееся число шагов

JNZ m ; переход, если получился не ноль

STOP

Здесь в каждой строчке после точки с запятой записан комментарий, объясняющий ее действие. Давайте проследим, как выполняется эта программа:

Команда R0 R1 бит Z переход
MOV 0,R0 0 1
MOV 5,R1 5 0
ADD R1,R0 5 0
SUB 1,R1 4 0
JNZ m 0 да
ADD R1,R0 9 0
SUB 1,R1 3 0
JNZ m 0 да
ADD R1,R0 12 0
SUB 1,R1 2 0
JNZ m 0 да
ADD R1,R0 14 0
SUB 1,R1 1 0
JNZ m 0 да
ADD R1,R0 15 0
SUB 1,R1 0 1
JNZ m 1 нет
STOP

Цикл заканчивается, потому что бит Z равен 1 (результат последней операции вычитания – ноль) и перехода по команде JNZ не происходит.

Задание на практическую работу

  1. Запустите тренажер «Лампанель». Вычислите приведенные выражения с помощью программы. Запишите в таблицу результаты, значение знакового бита и битов O, C, N и Z.
    Замечание: в программу нужно вводить числа в шестнадцатеричной системе счисления!
Выражение Результат Знаковый бит Биты состояния
без учета знака с учетом знака O C Z N
32760+32752 65512 -24 1 1 0 0 1
-32760-32752
256-256 0 0 0 0 0 0 0

Объясните полученные результаты:

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

Программа:

MOV 64, R0

MOV 0, R1

M:

ADD R0, R1

SUB 1, R0

JNZ M

STOP

Замечание: в программу нужно вводить числа в шестнадцатеричной системе счисления!

Ответ:

5050

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

Для выполнения умножения используйте команду MUL (см. справочную систему, клавиша F1).

Программа:

MOV 5, R0

MOV 1, R1

M:

MUL R0, R1

SUB 1, R0

JNZ M

STOP

С помощью программы заполните таблицу:

N N!
без учета знака с учетом знака
5 120 120
6 720 720
7 5040 5040
8 40320 -25216
9 35200 -30336

Объясните результаты, полученные в последних двух строчках:

ПРОИЗОШЛО ПЕРЕПОЛНЕНИЕ

Компьютерная арифметика

Практические работы

Для выполнения этих работ используется учебный компьютер «ЛамПанель», который можно загрузить со страницы http://kpolyakov. spb. ru/prog/lamp. htm.

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

Программа «ЛамПанель» – это модель процессора, который управляет ламповой панелью, то есть, может с помощью специальных команд зажигать и гасить определенные лампочки.

Процессор обрабатывает данные, используя специальные сверхбыстродействующие ячейки собственной памяти – регистры. В этой работе мы будем использовать только четыре 16-битных регистра общего назначения, которые называются R0, R1, R2 и R3. В области 1 на рисунке вы видите двоичные значения этих регистров (показаны черным цветом), шестнадцатеричные (синий цвет) и десятичные, без учета знака (зеленый цвет) и со знаком (коричневый цвет).

Область 2 – это текстовый редактор, в котором набирается программа для процессора на специальном языке, который называется языком ассемблера. Для того, чтобы программа выполнилась, нужно нажать клавишу F9 (выполнение без остановки) или F8 (выполнение по шагам). Чтобы программа остановилась, процессор должен выполнить команду STOP. Таким образом, простейшая программа состоит из одной команды STOP.

Для того, чтобы записать число в регистр, используют команду MOV (от англ. move – переместить). Числа записываются в шестнадцатеричной системе счисления. Например, команда

запишет число 1216 = 18 в регистр R0. Каждая команда записывается в отдельной строке. Поэтому полная программа будет выглядеть так:

Для того, чтобы добавить число к регистру, применяют команду ADD (от англ. add – сложить). Например, команда

добавляет число 1516 = 23 к регистру R0. Есть и аналогичная команда вычитания – SUB (от англ. subtract – вычесть). Нам будет нужна еще одна команда:

которая выполняет инверсию всех битов регистра, то есть меняет все нули на единицы, а единицы – на нули.

Запустите тренажер «Лампанель». Используя команду MOV, напишите программу, которая заполнит регистры так, как на рисунке:

Не забудьте закончить программу командой STOP. Выполните программу.

Программа:

Запишите, какие десятичные числа были только что записаны в регистры:

Какую операцию выполняет этот алгоритм? Найдите описание этого алгоритма в учебнике.

При тех же начальных значениях регистра R0 выполните программу

и заполните таблицу:

Подсказка: 65535=FFFF16, 32767=7FFF16

Арифметические операции с целыми числами

Знакомство с программой «ЛамПанель»

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

    бит C (от англ. carry – перенос) установлен (равен 1), если произошел перенос; в остальных случаях сброшен (равен 0); бит Z (от англ. zero – ноль) установлен, если результат последней операции – ноль; в остальных случаях сброшен; бит N (от англ. negative – отрицательный) установлен, если результат последней операции отрицательный; в остальных случаях сброшен. бит O (от англ. overflow – переполнение) установлен, если в результате последней операции произошло переполнение и результат неверен; в остальных случаях сброшен.

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

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

MOV 0, R0 ; начальное значение суммы

MOV 5, R1 ; количество шагов цикла

m: ; метка обозначает начало цикла

ADD R1, R0 ; R0:= R0 + R1

SUB 1, R1 ; уменьшить R1 – оставшееся число шагов

JNZ m ; переход, если получился не ноль

Здесь в каждой строчке после точки с запятой записан комментарий, объясняющий ее действие. Давайте проследим, как выполняется эта программа:

Цикл заканчивается, потому что бит Z равен 1 (результат последней операции вычитания – ноль) и перехода по команде JNZ не происходит.

Запустите тренажер «Лампанель». Вычислите приведенные выражения с помощью программы. Запишите в таблицу результаты, значение знакового бита и битов O, C, N и Z.
Замечание: в программу нужно вводить числа в шестнадцатеричной системе счисления!

Объясните полученные результаты:

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

Программа:

Замечание: в программу нужно вводить числа в шестнадцатеричной системе счисления!

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

Для выполнения умножения используйте команду MUL (см. справочную систему, клавиша F1).

Программа:

С помощью программы заполните таблицу:

без учета знака

с учетом знака

Объясните результаты, полученные в последних двух строчках:

Логические операции и сдвиги

Знакомство с программой «ЛамПанель»

В программе «ЛамПанель» можно использовать логические операции «НЕ» (уже знакомая нам команда NOT), «И» (команда AND), «ИЛИ» (команда OR) и «исключающее ИЛИ» (команда XOR). В последних трех командах после названия команды сначала указывается маска, а затем через запятую – регистр, к которому применяется логическая операция. Например, команда

обнуляет старшие 8 бит (старший байт) регистра R0. Маска может находиться в регистре, например, последовательность команд

устанавливает в единицу 8 младших бит регистра R0, а остальные оставляет без изменений.

Для выполнения сдвигов используются следующие команды

SHL 1,R0 ; логический сдвиг влево на 1 бит

SHR 2,R0 ; логический сдвиг вправо на 2 бита

SAR 1,R0 ; арифметический сдвиг вправо на 1 бит

ROL 2,R0 ; циклический сдвиг влево на 2 бита

ROR 3,R0 ; циклический сдвиг вправо на 3 бита

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

Задание на практическую работу

Запустите тренажер «ЛамПанель». Напишите программу, которая решает следующую задачу, используя логические операции:

В регистрах R1, R2 и R3 записаны коды трех десятичных цифр, составляющих трехзначное число (соответственно сотни, десятки и единицы). Построить в регистре R0 это число. Например, если R1=3116, R2=3216 и R3=3316, в регистре R0 должно получиться десятичное число 123.

Программа:

Используя программу «ЛамПанель», определите и запишите в таблицу значения регистра R0 после выполнения каждой из следующих команд:

Ответьте на вопросы:

    как изменится результат выполнения программы, если в команде 1 записать в R0 другое число?
    как изменится результат выполнения программы, если в командах 2 и 3 заменить маску на другую, например, на CB2416?
    как изменится результат выполнения программы, если маску в команде 2 изменить, а маску в команде 3 не менять?

Запишите в таблицу десятичные числа, которые будут получены в регистре R0 после выполнения каждой команды этой программы при разных начальных значениях R0 (две команды выполняются последовательно одна за другой):

Замечание: не забудьте перевести числа в шестнадцатеричную систему!

Когда последовательное выполнение этих двух команд не изменяет данные?

Напишите программу, которая решает следующую задачу, используя логические операции и сдвиги:

При кодирование цвета используются 4-битные значения составляющих R (красная), G (зеленая) и B (синяя). Коды этих составляющих записаны в регистрах R1, R2 и R3. Построить в регистре R0 полный код цвета. Например, если R1=A16, R2=B16 и R3=C16, в регистре R0 должно получиться число ABC16.

Программа:

Напишите программу, которая умножает число в регистре R0 на 10, не применяя команду умножения. Используйте арифметические операции и сдвиги.

К. Поляков, Компьютерная арифметика 1.Особенности представления чисел в компьютереОсобенности представления чисел в компьютере 2.Хранение в памяти целых чиселХранение в памяти целых чисел 3.Операции с целыми числамиОперации с целыми числами 4.Хранение в памяти вещественных чиселХранение в памяти вещественных чисел 5.Операции с вещественными числамиОперации с вещественными числами

К. Поляков, Компьютерная арифметика Тема 1. Особенности представления чисел в компьютере

Компьютерная арифметика К. Поляков, Предельные значения чисел В математике нет предельных значений! В компьютере – конечное число деталей, ограниченное количество разрядов. Какой диапазон? ? 10000?

Компьютерная арифметика К. Поляков, Предельные значения чисел 4 система счисления с основанием B K разрядов Переполнение разрядной сетки это ситуация, когда число, которое требуется сохранить, не умещается в имеющемся количестве разрядов вычислительного устройства.

Компьютерная арифметика К. Поляков, Вещественные числа 5 система счисления с основанием B F разрядов в дробной части Какой диапазон? ?

Компьютерная арифметика К. Поляков, Неточность представления 6 Не все вещественные числа могут быть представлены в компьютере точно! ! 0,3211 0,3212 0,3214

Компьютерная арифметика К. Поляков, Дискретность 7 1.Целые числа дискретны. 2.Вещественные числа непрерывны. 3.Компьютер работает только с дискретными данными. 4.При дискретизации может происходить потеря информации (искажение данных). 5.Большинство трудностей связано с кодированием вещественных чисел. Для хранения вещественных чисел нужна дискретизация! !

К. Поляков, Компьютерная арифметика Тема 2. Хранение в памяти целых чисел

Компьютерная арифметика К. Поляков, Целые числа без знака (unsigned) 9 78 = Беззнаковые данные – не могут быть отрицательными биты младший старший старший полубайт старшая цифра младший полубайт младшая цифра 4 16 E = 4E 16 = N

Компьютерная арифметика К. Поляков, Целые числа без знака 10 01…127128… …7F …FF … … C0 16 FF FF 16 C В газете «Информатика» (1/2011) есть опечатки на этой схеме: вместо «64» набрано «-64»!

Компьютерная арифметика К. Поляков, Целые числа без знака: диапазон 11 KX min X max типы данных byte (Паскаль) unsigned char (Си) word (Паскаль) unsigned short (Си) cardinal (Delphi) unsigned int (Си) ?

Компьютерная арифметика К. Поляков, Целые числа со знаком 12 Сколько места требуется для хранения знака? ? Старший (знаковый) бит числа определяет его знак. Если он равен 0, число положительное, если 1, то отрицательное. Прямой код: 78 = – 78 = –

Компьютерная арифметика К. Поляков, Целые числа со знаком 13 Идея: «– 1» должно быть представлено так, чтобы при сложении с числом «1» получить 0. Как кодируется «-1»? ? Для 8-битных чисел: код числа «–X» равен двоичному коду числа 256 – X (дополнение до 256). При K-битном кодировании дополнительный код числа «–X» равен двоичному коду числа 2 K – X (дополнение до 2 K). !

Компьютерная арифметика К. Поляков, Как построить дополнительный код? 14 Алгоритм А0: перевести число 2 K – X в двоичную систему счисления. для вычислений требуется K+1 разряд Алгоритм А1: 1)перевести число X в двоичную систему счисления; 2)построить обратный код, выполнив инверсию всех битов (заменить 0 на 1 и наоборот); 3)к результату добавить 1. Алгоритм А1: 1)перевести число X в двоичную систему счисления; 2)построить обратный код, выполнив инверсию всех битов (заменить 0 на 1 и наоборот); 3)к результату добавить = инверсия +1+1

Компьютерная арифметика К. Поляков, Как построить дополнительный код? 15 Алгоритм А2: 1)перевести число X-1 в двоичную систему счисления; 2)выполнить инверсию всех битов. Алгоритм А2: 1)перевести число X-1 в двоичную систему счисления; 2)выполнить инверсию всех битов = 77 = инверсия Алгоритм А3: 1)перевести число X в двоичную систему счисления; 2)выполнить инверсию всех старших битов числа, кроме младшей единицы и нулей после нее. Алгоритм А3: 1)перевести число X в двоичную систему счисления; 2)выполнить инверсию всех старших битов числа, кроме младшей единицы и нулей после нее. 78 = инверсия

Компьютерная арифметика К. Поляков, Целые числа со знаком 16 –128–127…–1 0… …FF …7F … … F С FF – 128 – 1– – – – 128 – F 16 С FF

Компьютерная арифметика К. Поляков, Целые числа co знаком: диапазон 17 KX min X max типы данных 8– shortInt (Delphi) char (Си) 16– smallInt (Delphi) short (Си) 32 – integer (Delphi) int (Си) 64 – – 1 int64 (Delphi) long long (Си)

К. Поляков, Компьютерная арифметика Тема 3. Операции с целыми числами

Компьютерная арифметика К. Поляков, Сложение и вычитание 19 Операции с положительными и отрицательными числами выполняются по одинаковым алгоритмам! ! Вычитание = сложение с дополнительным кодом вычитаемого! !

Компьютерная арифметика К. Поляков, Переполнение 20 знаковый бит бит переноса Если бит переноса не совпадает со знаковым битом результата, произошло переполнение и результат неверный. ! СS СS

Компьютерная арифметика К. Поляков, Умножение Умножение выполняется в помощью сложения и сдвига. ! × ×

Компьютерная арифметика К. Поляков, Поразрядные логические операции 22 Поразрядные операции выполняются с отдельными битами числа и не влияют на остальные. Сложение – это поразрядная операция? ? регистр Операция «НЕ» (инверсия, not): R not R

Компьютерная арифметика К. Поляков, Логическая операция «И» (and, &) 23 DMD and M данные маска Маска – константа, которая определяет область применения логической операции к битам многоразрядного числа. С помощью операции «И» можно сбросить (установить в ноль) биты, для которых маска равна 0! ! D D and M M AA 16 6С AA 16 and 6C 16 = ?

Компьютерная арифметика К. Поляков, Логическая операция «ИЛИ» (or, |) 24 DMD or M С помощью операции «ИЛИ» можно записать единицу в биты, для которых маска равна 1! ! D D or M M AA 16 6С 16 EE AA 16 or 6C 16 = ?

Компьютерная арифметика К. Поляков, Операция «исключающее ИЛИ» (xor, ^) 25 DMD xor M С помощью операции «исключающее ИЛИ» можно инвертировать биты, для которых маска равна 1! ! D D xor M M AA 16 6С 16 C AA 16 xor 6C 16 = ?

Компьютерная арифметика К. Поляков, Шифрование с помощью xor 26 Идея: (A xor B) xor B = Операция «исключающее ИЛИ» обратима, то есть ее повторное применение восстанавливает исходное значение! ! A Текст: 2*2=4 Коды символов: «2» = = «*» = 2A 16 = «=» = 3D 16 = «4» = =

Компьютерная арифметика К. Поляков, Шифрование с помощью xor 27 Исходный текст: 2*2=4 «2» xor = «*» 2A 16 xor = «=» 3D 16 xor = «4» xor = «%» 3D 16 «=» 2A 16 «*» «#» Маска: 23 = = Зашифрованный текст: %=%*# Расшифровка: «%» xor = «=» 3D 16 xor = «*» 2A 16 xor = «#» xor = «2» 2A 16 «*» 3D 16 «=» «4» В газете «Информатика» (1/2011) есть опечатка: вместо «%=%*#» набрано «%=%7*7#»!

1; N = N > 1; N:= N shl 1; N:= N shr 1; N:= N shl 1; N:= N shr 1″ title=»Компьютерная арифметика К. Поляков, 2010 http://kpolyakov.narod.ru Логический сдвиг 28 10011011 Влево: 0011011010 бит переноса С Вправо: 10011011 01001101 1 С 0 Си: Паскаль: N = N > 1; N = N > 1; N:= N shl 1; N:= N shr 1; N:= N shl 1; N:= N shr 1″ class=»link_thumb»>
28

Компьютерная арифметика К. Поляков, Логический сдвиг Влево: бит переноса С Вправо: С 0 Си: Паскаль: N = N > 1; N = N > 1; N:= N shl 1; N:= N shr 1; N:= N shl 1; N:= N shr 1; shift left shift right
1; N = N > 1; N:= N shl 1; N:= N shr 1; N:= N shl 1; N:= N shr 1″>
1; N = N > 1; N:= N shl 1; N:= N shr 1; N:= N shl 1; N:= N shr 1; shift left shift right»>
1; N = N > 1; N:= N shl 1; N:= N shr 1; N:= N shl 1; N:= N shr 1″ title=»Компьютерная арифметика К. Поляков, 2010 http://kpolyakov.narod.ru Логический сдвиг 28 10011011 Влево: 0011011010 бит переноса С Вправо: 10011011 01001101 1 С 0 Си: Паскаль: N = N > 1; N = N > 1; N:= N shl 1; N:= N shr 1; N:= N shl 1; N:= N shr 1″>
title=»Компьютерная арифметика К. Поляков, 2010 http://kpolyakov.narod.ru Логический сдвиг 28 10011011 Влево: 0011011010 бит переноса С Вправо: 10011011 01001101 1 С 0 Си: Паскаль: N = N > 1; N = N > 1; N:= N shl 1; N:= N shr 1; N:= N shl 1; N:= N shr 1″>

Компьютерная арифметика К. Поляков, Логический сдвиг Влево: Вправо: Если число нечётное? ? Логический сдвиг влево (вправо) – это быстрый способ умножения (деления без остатка) положительного числа на 2. Если число отрицательное? ?

Компьютерная арифметика К. Поляков, Арифметический сдвиг (вправо) 30 –12 Если число нечётное? ? С – 6 Примеры: –20 –15 –11 –3–3 –1 –10 –8 –6 –2 –1 Арифметический сдвиг вправо – деление на 2 нацело с округлением «вниз» (к ближайшему меньшему целому).

Компьютерная арифметика К. Поляков, Циклический сдвиг Влево: Вправо: Циклический сдвиг предназначен для последовательного просмотра битов без потери данных. !

Компьютерная арифметика К. Поляков, Пример 32 Задача: в целой переменной N (32 бита) закодирована информация о цвете пикселя в RGB: Записать в переменные R, G, B составляющие цвета. Вариант 1: 1.Обнулить все биты, кроме G. Маска для выделения G: 0000FF Сдвинуть вправо так, чтобы число G передвинулось в младший байт. 0RGB Си: G =(N & 0xFF00) >> 8; Паскаль: G:=(N and $FF00) shr 8;
> 8; Паскаль: G:=(N and $FF00) shr 8;»>

Компьютерная арифметика К. Поляков, Пример 33 Вариант 2: 1.Сдвинуть вправо так, чтобы число G передвинулось в младший байт. 2.Обнулить все биты, кроме G. Маска для выделения G: FF 16 0RGB Си: G =(N >> 8) & 0xFF; Паскаль: G:=(N shr 8) and $FF; Как решить, используя только сдвиги? ?
> 8) & 0xFF; Паскаль: G:=(N shr 8) and $FF; Как решить, используя только сдвиги? ?»>

Компьютерная арифметика К. Поляков, Пример 34 0RGB Си: R =B =R =B = R =B =R =B = Паскаль: R:= B:= R:= B:=


Компьютерная арифметика К. Поляков, Хранение вещественных чисел 36 С фиксированной запятой (в первых ЭВМ): целая частьдробная часть для больших и маленьких чисел нужно масштабирование 0,0 С плавающей запятой (автоматическое масштабирование): знакпорядок P значащая часть Z положение запятой цифры числа 1,2345· ,2345·10 17

Компьютерная арифметика К. Поляков, Хранение вещественных чисел 37 Теоретически оптимальный вариант (целая часть = 0): 0, = 0,12345· ,345 = 0,12345·10 2 X 10 всегда 0 один разряд расходуется впустую! Экономный вариант (целая часть от 1 до B): основание системы счисления X 10 0, = 1,2345· ,345 = 1,2345·10 1 повышение точности при конечном числе разрядов

Компьютерная арифметика К. Поляков, Число обычной точности (single) ,25 = ,01 2 = -1, ·2 4 знакпорядокзначащая часть single: 4 байта = 32 бита мантисса = дробная часть Z порядок со смещением знак p = = 131 = С18A000 0 для single

Компьютерная арифметика К. Поляков, Диапазон вещественных чисел 40 типдиапазон число десятичных значащих цифр размер (байт) single1,4· – 3,4· double4,9· – 1,8· extended3,6· – 1,2· Extended – тип для вычислений в сопроцессоре, единица в значащей части не скрывается. Single, double – только для хранения.

Компьютерная арифметика К. Поляков, Сложение и вычитание 42 1)порядки выравниваются до большего 2)значащие части складываются (или вычитаются) 3)результат нормализуется Как сложить два числа с плавающей запятой? ! 1,2345·10 – 5 + 1,2345·10 5 = ? Пример: 7,25 = 111,01 2 = 1, ·2 2 1,75 = 1,11 2 = 1,11 2 ·2 0 1,75 = 0, ·2 2 1,011120,01 2 ·2 2 = 1,001 2 ·2 3 Почему порядки выравнивают до большего? ?

Компьютерная арифметика К. Поляков, Умножение и деление 43 Как умножить два числа с плавающей запятой? ! 1,2345·10 – 5 · 1,2345·10 5 = ? 1)значащие части умножаются (или делятся) 2)порядки складываются (или вычитаются) 3)результат нормализуется Пример: 1,75 = 1,11 2 = 1,11 2 ·2 0 6 = = 1,1 2 ·2 2 1,11 2 ·1,1 2 = 10,101 2 ·2 2 = 1, ·2 3 Надо ли выравнивать порядки? ? = = 2

Компьютерная арифметика К. Поляков, Конец фильма ПОЛЯКОВ Константин Юрьевич д.т.н., учитель информатики высшей категории, ГОУ СОШ 163, г. Санкт-Петербург

The digital computer is an electronic machine which contains thousands of tiny circuits characterized by the fact that they have only two states: complete and broken. A complete circuit signifies that the electricity is on,
whereas a broken circuit signifies that the electricity is off.
It is through the on and off states that information is transmitted by the computer. Substituting numbers for these states, one can say that 1 is on and 0 is off; this is the number system on which the computer operates. Because there are only two digits in this system, it is termed a binary
system with the 0 and 1 being called bits
— B from binary and it from digit. They can represent all other numbers, the alphabet, and special characters such as $ and #.

Цифровой компьютер – это электронная машина, которая включает в себя тысячи крохотных цепей, характеризуемых тем фактом, что они могут находиться только в двух состояниях: замкнутом и разомкнутом. Замкнутая цепь означает, что электричество есть, тогда как разомкнутая цепь показывает, что электричества нет. Через состояния, когда электричество есть и когда нет, информация передаётся компьютером. Замещающие цифры для этих состояний можно описать как 1 – включена цепь, и 0 – выключена; это система счисления, на которой работает компьютер. Из-за того, что в этой системе только две цифры, она называется двоичной системой счисления, а 0 и 1 называются битами (bits) – буква “B” от слова «binary» (бинарный, двоичный), а буквы “it” от слова «digit» (цифровой). Они могут представлять все другие числа, алфавит, и специальные символы, такие как $ и #.

In our everyday arithmetic, we use the decimal
system, which is based on ten digits — 0, 1, 2, 3, 4, 5, 6, 7, 8, and 9. In the decimal system, multiplication by ten would yield the following results:

В нашей повседневной арифметике мы пользуемся десятичной
системой счисления, которая основана на десяти цифрах – 0, 1, 2, 3, 4, 5, 6, 7, 8 и 9. В десятичной системе счисления умножение на 10 приводит к следующим результатам:

10 = (10 0 x 0) + (10 1 x l)

100 = (10 0 x 0) + (10 1 x 0) + (10 2 x 1)

1000 = (10 0 x 0) + (10 1 x 0) + (10 2 x 0) + (10 3 x 1)

In tabulating this, we notice that we multiply by 10 each time we move a number one column to the left; that is, we increase the base number 10 by the power 1.

Занеся результаты в таблицу, мы заметим, что мы, умножая на 10 каждый раз, двигаем цифру на один столбец влево; то есть мы увеличиваем степень числа 10 на единицу.

(10 3) (10 2) (10 1) (10 0)
1000 100 10 1

Therefore, 652 in the decimal system is equal to 2 + 50 + 600:

Следовательно, 652 в десятичной системе счисления равняется 2 + 50 + 600:

100 10 1

Since the binary system is based on two digits, 0 and 1, we multiply by 2 instead of by 10 each time we move a number one column to the left. So to convert binary to decimal, we use the base number 2 with sequentially increasing powers.

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

(2 3) (2 2) (2 1) (2 0)

As an example, the decimal number 1 is 0001 in binary.

Как пример, десятичное число 1 в двоичной системе будет 0001.

8 4 2 1
(decimal) (десятичное)

The decimal number 2 is equal to 1 x 2 plus 0 x 1 or 0010 in binary.

Десятичное число 2 равняется 1 x 2 плюс 0 x 1 или 0010 в двоичной системе.

0 0 1 0 (0 x 1) plus (1 x 2) ((0 x 1) плюс (1 x 2))

The decimal number 3 is equal to 1 x 1 plus 1 x 2 or 0011 in binary.

Десятичное число 3 равняется 1 x 1 плюс 1 x 2 или 0011 в двоичной системе.

0 0 1 1 (0 x 1) plus (1 x 2) ((0 x 1) плюс (1 x 2))

Let us tabulate the decimal numbers 0 to 15 in the binary system.

Давайте составим таблицу десятичных чисел от 0 до 15 в двоичной системе счисления.

(2 3) (2 2) (2 1) (2 0)

8 4 2 1

1 0 0 0 (8)
1 0 0 1 (9)

The binary system is very tedious for humans, especially in the handling of long numbers, and this increases the possibility of committing errors. To overcome this limitation, two number systems were developed which are used as a form of shorthand in reading groups of four binary digits. These are the octal
system with a base of 8, and the hexadecimal
system with a base of 16. CDC computers use the octal system, whereas IBM computers use the hexadecimal.

Двоичная система счисления очень трудна для людей, особенно в обращении с большими числами, это увеличивает возможность совершения ошибок. Чтобы преодолеть это ограничение, были разработаны две системы счисления, которые используются в форме условных обозначений в читабельных группах по четыре двоичные цифры. Это восьмеричная
система счисления с основанием числа 8 и шестнадцатеричная
система счисления с основанием числа 16. Компьютеры фирмы CDC используют восьмеричную систему счисления, тогда как компьютеры фирмы IBM – шестнадцатеричную.

The table above shows that four binary digits may be arranged into 16 different combinations ranging from 0000 to 1111. This forms the basis of the hexadecimal system. To represent these binary combinations, the system uses the digits 0 to 9 and 6 letters of the alphabet: A, B, C, D, E, and F. Following is a table that shows the relationship between the binary, the octal, the hexadecimal, and the decimal systems.

Таблица выше показывает, что четыре двоичные цифры могут быть упорядочены в 16 различных комбинациях от 0000 до 1111. Это формирует основу шестнадцатеричной системы. Чтобы представить эти двоичные комбинации, система использует цифры от 0 до 9 и 6 букв алфавита: A, B, C, D, E и F. Ниже – таблица, которая показывает связь между двоичной, восьмеричной, шестнадцатеричной и десятичной системами счисления.

Decimal Hexadecimal Octal Binary

On some computers, addition is the only arithmetic operation possible. The remaining arithmetic operations are based on the operation of addition (+): subtraction (-) can be thought of as the addition of negative numbers; multiplication (x) is repeated addition; division (÷) is repeated subtraction. How do we add in the binary system? There are four basic rules of addition which we must remember:

На некоторых компьютерах сложение – единственная возможная арифметическая операция. Оставшиеся арифметические операции основаны на операции сложения (+): вычитание (-) может быть записано как сложение отрицательных чисел; умножение (x) – повторяющееся сложение; деление (÷) – повторяющееся вычитание. Как мы складываем в двоичной системе? Есть четыре основных правила сложения, которые мы должны запомнить:

1 + 1 = 0 and carry 1 or 10 (read from the right to the left as zero-one). (и 1 в уме или 10 (читается справа налево как ноль-один).

Here is an example:

Вот пример:

Binary (Двоичная) Decimal (Десятичная)

Упражнение 20

Flowcharting.

Построение блок-схем.

So far we have dealt mainly with computers, but now it is imperative that we find out how a program is written. In all activities involving computers, it is necessary that the programmer is aware of what the machine is doing and what a program is supposed to do. As previously mentioned, flowcharting, one of the steps in programming, indicates the logical path the computer will follow in executing
a program; it is a drawing very much like a road map. Flowcharting is not restricted to the preparation of programs in a particular language and should be done for each major problem before the writing of the program is attempted. If the finished program does not run as it should, the errors are more easily detected on the flowchart than in the maze of words, characters, and numbers that make up the computer program. In order to develop a flowchart successfully, a programmer should be aware of the sequence of steps needed to obtain a correct solution to a problem.

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

There are two ways of making a flowchart: the freehand version and the neater, more readable version. In the former version, the graphic outlines are simply jotted down as the steps of the program are worked out. This is quite satisfactory if the flowchart is not intended to be kept as a permanent record. However, if a permanent, neater and more readable flowchart is needed, the latter method whereby a template,
a sheet of plastic with all the flowcharting symbols cut into it, is used.

Есть два способа построения блок-схемы: рисование от руки и чёткая, удобочитаемая версия. В первом способе графические выходные линии просто записываются как шаги программы по мере её выполнения. Это достаточно неплохо, если блок-схема не будет храниться как постоянный документ. Однако, если требуется постоянная, чёткая и удобочитаемая блок-схема, применяется последний метод, шаблон
, лист пластика со всеми блок-схемными знаками, помещёнными на нём.

The following symbols should be used for the purpose of uniformity. The first and last symbol is . This is the terminal symbol
which indicates the beginning or the end of a program. The word «START» must be inserted inside the figure if it is the beginning of the program and «STOP» if it is the end of the program. The figure in the form of a parallelogram
is used as an input/output symbol. It indicates that something is either brought to or taken from the program. The rectangular
symbol stands for processing and indicates a place in the program where action is taken. In a program, to indicate that a decision has to be made, the diamond-shaped symbol is used. The decision is usually in the form of a question that must be answered by either «yes» or «no». Finally, the arrows are used to show the flow or direction in which the different actions in the program are performed.

Следующие знаки должны использоваться с целью единообразия. Первый и последний знак – это . Это терминальный знак
,который показывает начало или конец программы. Слово «НАЧАЛО» должно быть вставлено в рисунок, если это начало программы, а слово «СТОП» – если это конец программы. Рисунок в виде параллелограмма
используется как знак ввода/вывода. Он показывает, что что-то либо вносится в программу, либо берётся из неё. Прямоугольный
знак означает обработку и показывает место в программе, где выполняется действие. В программе, чтобы показать, какое решение надо принять, используется ромбовидный знак . Решение представляется обычно в виде вопроса, на который надо ответить либо «да», либо «нет». Наконец, стрелки используются, чтобы показать движение или направление, в котором выполняются различные действия в программе.

It should be noted that a flowchart is not a program, but only a step in the preparation of a program, and is used in determining how to set up and write the program. However, if the problem is not understood, neither the flowchart nor the program can be done correctly. It is possible for two programmers, working separately, to write programs to solve the same problem and come up with flowcharts and programs that may be altogether different.

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

After a program has been worked out, it is usually written down and kept with a copy of the flowchart along with detailed instructions for the use and interpretation of the program. This procedure is part of what is referred to as program documentation.
If documentation isn»t available, it is always possible to work backwards and make a flowchart from an application program. It may be necessary to create a new flowchart when the original one is missing, in order to understand the program for which it was a preparatory step.

После отработки программы она обычно записывается и хранится с копией блок-схемы наряду с детальными инструкциями по использованию и описанием работы программы. Эта процедура – часть того, что называется программной документацией. Если документация недоступна, то всегда есть возможность работать в обратном направлении и составить блок-схему из прикладной программы. Может быть необходимо разработать новую блок-схему, когда оригинальная утеряна, чтобы понять программу, для которой это был подготовительный этап.

Flowcharting is one of the first things a student programmer is taught, because a flowchart shows how a person thinks about a problem. In other words, it is through this that a new programmer reveals his or her logical and analytical ability, which is a must in programming.

Построение блок-схемы – одна из первых вещей, которой учат студентов-программистов, потому что блок-схема показывает, как человек думает о задаче. Другими словами, именно через неё новичок-программист показывает свои логические и аналитические способности, которые нужны в программировании.

Exercises

Упражнения

Main idea

Основной смысл

Which statement expresses the main idea of the text? Why did you eliminate the other choices?

Какое предложение наилучшим образом выражает основную идею текста? Почему вы исключили другие варианты?

1. Every programmer must know how to flowchart.

1. Каждый программист должен знать, как строить блок-схему.

2. Program documentation specifies what the program is supposed to do.

2. Программная документация определяет, что программа должна делать.

3. Flowcharting is a basic step in programming. (+)

3. Построение блок-схемы – начальный шаг в программировании. (+)

Уровень A.

1. Запустите тренажер «Лампанель».

2. Используя команду MOV, напишите программу, которая заполнит регистры так, как на рисунке:

Не забудьте закончить программу командой STOP. Выполните программу.

Программа:

3. Запишите, какие десятичные числа были только что записаны в регистры:

Регистр

Десятичные значения

без учета знака с учетом знака
R0    
R1    
R2    
R3    

4. Выполните программу

sub 1, R0

not R0

stop

при различных начальных значениях регистра R0 и запишите десятичные значения, полученные в R0 после выполнения программы (не забудьте перевести числа в шестнадцатеричную систему):

Начальное значение R0

Значение R0 после
выполнения программы

без учета знака с учетом знака
   
   
   

Какую операцию выполняет этот алгоритм? Найдите описание этого алгоритма в учебнике.

Ответ:

Уровень B.

5. При тех же начальных значениях регистра R0 выполните программу

not R0

add 1, R0

stop

и заполните таблицу (не забудьте перевести числа в шестнадцатеричную систему):

Начальное значение R0

Значение R0 после
выполнения программы

без учета знака с учетом знака
   
   
   

Сделайте выводы, сравнивая результаты пп. 4 и 5.

Выводы:

Уровень C.

6. Используя программу «ЛамПанель», вычислите арифметические выражения и запишите результаты в таблицу (не забудьте перевести числа в шестнадцатеричную систему):

Выражение

Результат

без учета знака с учетом знака
65530 + 9    
32760 + 9    
8 — 10    

Подсказка: 65535=FFFF16, 32767=7FFF16

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

Объясните, почему при сложении во второй строке в варианте «с учётом знака» получилось именно такое число. Как его можно рассчитать без программы?

Объясните, почему при сложении в третьей строке в варианте «без учёта знака» получилось именно такое число. Как его можно рассчитать без программы?


Федеральное государственное бюджетное

ОБРАЗОВАТЕЛЬНОЕ
УЧРЕЖДЕНИЕ

высшего
профессионального образования

«Московский
государственный университет экономики,
статистики и информатики (МЭСИ)»

ОТЧЕТ
ПО УЧЕБНОЙ ПРАКТИКЕ (УП.02)

ПО
ПРОФЕССИОНАЛЬНОМУ МОДУЛЮ

ПМ.02
«Применение микропроцессорных систем,
установка и настройка периферийного
оборудования»

для
специальности

230113.51
«Компьютерные системы и комплексы»

Исполнитель:

студент
гр._ДЛТ-101

__Володин
Л. А,

Руководитель:

преподаватель

__Копылова.Е.А__________Себекин.Е.В________

2014г.

Тематический
план-график практики профессионального
модуля

п/п

Виды
работ

Количество

часов

Подготовка
презентаций по теме «История развития
микропроцессоров»

6

Подготовка
презентаций по теме «Развитие
суперкомпьютеров в России»

6

Подготовка
презентаций по теме «Производство
микропроцессоров»

6

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

18

Анализ
и разработка предложений по заданной
профессиональной проблеме

12

Выполнение
индивидуальных заданий по работе с
микроконтроллерами

16

Работа
с нормативными документами. Работа
со справочниками

8

Подготовка
презентаций по теме «История развития
устройств ввода-вывода»

6

Подготовка
презентаций по теме «3D
принтеры»

6

Подготовка
презентаций по теме «Современные
цифровые фото- и видеокамеры»

6

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

18

Анализ
и разработка предложений по заданной
профессиональной проблеме

12

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

16

Работа
с нормативными документами. Работа
со справочниками

8

Всего:

144

Содержание

Глава
1. Микропроцессорные системы………………………………….

4

Задание
1…………………………………………………………………..

4

Задание
2…………………………………………………………………

5

Задание
3…………………………………………………………………..

6

Задание
4…………………………………………………………………..

5

Задание
5…………………………………………………………………..

10

Задание
6…………………………………………………………………..

14

Задание
7………………………………………………………………….

14

Отзыв………………………………………………………………………

15

Аттестационный
лист……………………………………………………..

17

Отчёт

Глава
1. Микропроцессорные системы

Задание
1.

Подготовка
презентаций по теме «История развития
микропроцессоров». Была подготовлена
презентация где описывает появление
самого первого микропроцессора до
самого современного.

Рисунок
1 – Презентация «История развития
микропроцессоров»

Продолжение
презентации на диске.

Задание
2.

Подготовка
презентаций по теме «Развитие
суперкомпьютеров в России».
В этой презентации рассказывается о
самых мощных суперкомпьютерах в России.

Рисунок
2 – Презентация «Развитие суперкомпьютеров
в России»

Продолжение
презентации на диске

Задание
3.

Подготовка
презентаций по теме «Производство
микропроцессоров». В
этой презентации рассматривается
создание микропроцессора от начала до
конца.

Рисунок
3 – Презентация «Производство
микропроцессоров»

Продолжение
презентации на диске

Задание
4.

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

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

Рисунок
4 – Презентация «ЛамПанель»

Продолжение
презентации на диске

4.2.
Выполните
задание в соответствии со своим вариантом
(по номеру в журнале)

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

Запишите,
какие десятичные числа были только что
записаны в регистры.

Регистр

Десятичные
значения

без
учета знака

с
учетом знака

R0

53248

-12288

R1

56797

-8739

R2

3328

3328

R3

221

221

Рисунок
5 – Окно выполнения программы

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

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

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

Рисунок 4 – Презентация «ЛамПанель»

Продолжение презентации на диске

4.2. Выполните задание в соответствии со своим вариантом (по номеру в журнале)

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

Запишите, какие десятичные числа были только что записаны в регистры.

Регистр Десятичные значения
без учета знака с учетом знака
R0 -12288
R1 -8739
R2
R3

Рисунок 5 – Окно выполнения программы

Компьютерная арифметика

Практические работы

Для выполнения этих работ используется учебный компьютер «ЛамПанель», который можно загрузить со страницы http://kpolyakov. spb. ru/prog/lamp. htm.

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

Программа «ЛамПанель» – это модель процессора, который управляет ламповой панелью, то есть, может с помощью специальных команд зажигать и гасить определенные лампочки.

Процессор обрабатывает данные, используя специальные сверхбыстродействующие ячейки собственной памяти – регистры. В этой работе мы будем использовать только четыре 16-битных регистра общего назначения, которые называются R0, R1, R2 и R3. В области 1 на рисунке вы видите двоичные значения этих регистров (показаны черным цветом), шестнадцатеричные (синий цвет) и десятичные, без учета знака (зеленый цвет) и со знаком (коричневый цвет).

Область 2 – это текстовый редактор, в котором набирается программа для процессора на специальном языке, который называется языком ассемблера. Для того, чтобы программа выполнилась, нужно нажать клавишу F9 (выполнение без остановки) или F8 (выполнение по шагам). Чтобы программа остановилась, процессор должен выполнить команду STOP. Таким образом, простейшая программа состоит из одной команды STOP.

Для того, чтобы записать число в регистр, используют команду MOV (от англ. move – переместить). Числа записываются в шестнадцатеричной системе счисления. Например, команда

запишет число 1216 = 18 в регистр R0. Каждая команда записывается в отдельной строке. Поэтому полная программа будет выглядеть так:

Для того, чтобы добавить число к регистру, применяют команду ADD (от англ. add – сложить). Например, команда

добавляет число 1516 = 23 к регистру R0. Есть и аналогичная команда вычитания – SUB (от англ. subtract – вычесть). Нам будет нужна еще одна команда:

которая выполняет инверсию всех битов регистра, то есть меняет все нули на единицы, а единицы – на нули.

Запустите тренажер «Лампанель». Используя команду MOV, напишите программу, которая заполнит регистры так, как на рисунке:

Не забудьте закончить программу командой STOP. Выполните программу.

Программа:

Запишите, какие десятичные числа были только что записаны в регистры:

Какую операцию выполняет этот алгоритм? Найдите описание этого алгоритма в учебнике.

При тех же начальных значениях регистра R0 выполните программу

и заполните таблицу:

Подсказка: 65535=FFFF16, 32767=7FFF16

Арифметические операции с целыми числами

Знакомство с программой «ЛамПанель»

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

    бит C (от англ. carry – перенос) установлен (равен 1), если произошел перенос; в остальных случаях сброшен (равен 0); бит Z (от англ. zero – ноль) установлен, если результат последней операции – ноль; в остальных случаях сброшен; бит N (от англ. negative – отрицательный) установлен, если результат последней операции отрицательный; в остальных случаях сброшен. бит O (от англ. overflow – переполнение) установлен, если в результате последней операции произошло переполнение и результат неверен; в остальных случаях сброшен.

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

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

MOV 0, R0 ; начальное значение суммы

MOV 5, R1 ; количество шагов цикла

m: ; метка обозначает начало цикла

ADD R1, R0 ; R0:= R0 + R1

SUB 1, R1 ; уменьшить R1 – оставшееся число шагов

JNZ m ; переход, если получился не ноль

Здесь в каждой строчке после точки с запятой записан комментарий, объясняющий ее действие. Давайте проследим, как выполняется эта программа:

Цикл заканчивается, потому что бит Z равен 1 (результат последней операции вычитания – ноль) и перехода по команде JNZ не происходит.

Запустите тренажер «Лампанель». Вычислите приведенные выражения с помощью программы. Запишите в таблицу результаты, значение знакового бита и битов O, C, N и Z.
Замечание: в программу нужно вводить числа в шестнадцатеричной системе счисления!

Объясните полученные результаты:

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

Программа:

Замечание: в программу нужно вводить числа в шестнадцатеричной системе счисления!

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

Для выполнения умножения используйте команду MUL (см. справочную систему, клавиша F1).

Программа:

С помощью программы заполните таблицу:

без учета знака

с учетом знака

Объясните результаты, полученные в последних двух строчках:

Логические операции и сдвиги

Знакомство с программой «ЛамПанель»

В программе «ЛамПанель» можно использовать логические операции «НЕ» (уже знакомая нам команда NOT), «И» (команда AND), «ИЛИ» (команда OR) и «исключающее ИЛИ» (команда XOR). В последних трех командах после названия команды сначала указывается маска, а затем через запятую – регистр, к которому применяется логическая операция. Например, команда

обнуляет старшие 8 бит (старший байт) регистра R0. Маска может находиться в регистре, например, последовательность команд

устанавливает в единицу 8 младших бит регистра R0, а остальные оставляет без изменений.

Для выполнения сдвигов используются следующие команды

SHL 1,R0 ; логический сдвиг влево на 1 бит

SHR 2,R0 ; логический сдвиг вправо на 2 бита

SAR 1,R0 ; арифметический сдвиг вправо на 1 бит

ROL 2,R0 ; циклический сдвиг влево на 2 бита

ROR 3,R0 ; циклический сдвиг вправо на 3 бита

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

Задание на практическую работу

Запустите тренажер «ЛамПанель». Напишите программу, которая решает следующую задачу, используя логические операции:

В регистрах R1, R2 и R3 записаны коды трех десятичных цифр, составляющих трехзначное число (соответственно сотни, десятки и единицы). Построить в регистре R0 это число. Например, если R1=3116, R2=3216 и R3=3316, в регистре R0 должно получиться десятичное число 123.

Программа:

Используя программу «ЛамПанель», определите и запишите в таблицу значения регистра R0 после выполнения каждой из следующих команд:

Ответьте на вопросы:

    как изменится результат выполнения программы, если в команде 1 записать в R0 другое число?
    как изменится результат выполнения программы, если в командах 2 и 3 заменить маску на другую, например, на CB2416?
    как изменится результат выполнения программы, если маску в команде 2 изменить, а маску в команде 3 не менять?

Запишите в таблицу десятичные числа, которые будут получены в регистре R0 после выполнения каждой команды этой программы при разных начальных значениях R0 (две команды выполняются последовательно одна за другой):

Замечание: не забудьте перевести числа в шестнадцатеричную систему!

Когда последовательное выполнение этих двух команд не изменяет данные?

Напишите программу, которая решает следующую задачу, используя логические операции и сдвиги:

При кодирование цвета используются 4-битные значения составляющих R (красная), G (зеленая) и B (синяя). Коды этих составляющих записаны в регистрах R1, R2 и R3. Построить в регистре R0 полный код цвета. Например, если R1=A16, R2=B16 и R3=C16, в регистре R0 должно получиться число ABC16.

Программа:

Напишите программу, которая умножает число в регистре R0 на 10, не применяя команду умножения. Используйте арифметические операции и сдвиги.

Учебное пособие

Омск– 2004

УДК 004.9(075)

ББК 32.973.202+22.12 я 73

Рецензенты:

С.А. Терентьев, канд. физ.-мат. наук, Омский государственный университет;

О.Н. Лучко канд. пед. наук, Омский государственный институт сервиса

Потапов В.И., Шафеева О.П., Червенчук И.В.

П 64 Основы компьютерной арифметики и логики:
Учеб.пособие. – Омск: Изд- во

ОмГТУ, 2004. – 172 с.

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

Предназначено для студентов направления «Информатика и вычислительная техника».

Печатается по решению редакционно-издательского совета Омского государственного технического университета.

УДК 004.9(075)

ББК 32.973.202+22.12 я 73

© Омский государственный

технический университет, 2004

ОГЛАВЛЕНИЕ
Предисловие…………………………………………………………………
1. Основы двоичной компьютерной арифметики ………………………..
1.1. Позиционные системы счисления ………………………………………….
1.1.1. Десятичная позиционная система счисления …………………….……….
1.1.2. Двоичная позиционная система счисления ……………………..…………
1.1.3. Восьмеричная позиционная система счисления …………………………..
1.1.4. Шестнадцатеричная позиционная система счисления ……………………
1.2. Перевод чисел из одной позиционной системы счисления в другую……
1.2.1. Перевод целых чисел ………………………………………………………..
1.2.2. Перевод правильных дробей………………………………………………..
1.2.3. Перевод неправильных дробей из одной системы счисления в другую…
1.2.4. Частный случай перевода чисел из одной системы счисления в другую..
1.2.5. Перевод чисел из одной системы счисления в другую
с использованием промежуточной двоично-десятичной системы ………
1.3. Представление чисел с фиксированной запятой (точкой) ………………..
1.4. Представление чисел с плавающей запятой (точкой) …………………….
1.5. Коды двоичных чисел ………………………………………………………
1.5.1. Прямой код …………………………………………………………………..
1.5.2. Обратный код ………………………………………………………………..
1.5.3. Модифицированный обратный код ………………………………………..
1.5.4. Дополнительный код ………………………………………………………..
1.5.5. Модифицированный дополнительный код ………………………………..
2. Выполнение арифметических операций с двоичными числами ……
2.1. Сложение (вычитание) двоичных чисел с фиксированной запятой ……..
2.1.1. Алгебраическое сложение чисел в дополнительном коде ……………….
2.1.2. Алгебраическое сложение чисел в обратном коде ………………………..
2.1.3. Переполнение разрядной сетки при сложении чисел ……………………
2.2. Сложение (вычитание) двоичных чисел с плавающей запятой ………….
2.2.1. Метод ускоренного сложения двоичных чисел
с запоминанием переносов………………………………………………….
2.3. Умножение двоичных чисел с фиксированной запятой ………………….
2.4. Машинные технологии выполнения операции умножения двоичных чисел с фиксированной запятой…………………………………………….
2.5. Умножение двоичных чисел с плавающей запятой ………………………
2.6. Методы ускоренного выполнения операции умножения
двоичных чисел ………………………………………………………………
2.6.1. Метод пропуска такта суммирования ……………………………………..
2.6.2. Метод анализа сомножителей ………………………………………………
2.6.3. Метод расшифровки и одновременного умножения на два разряда множителя ……………………………………………………………………
2.6.4. Метод ускоренного умножения Мак-Сорли ……………………………….
2.6.5. Метод ускоренного умножения Лемана ……………………………………
2.6.6. Метод умножения с расшифровкой пар разрядов множителя
и запоминанием переносов …………………………………………………
2.7. Деление двоичных чисел с фиксированной запятой ………………………
2.8. Деление двоичных чисел с плавающей запятой …………………………..
3. Основы десятичной компьютерной арифметики……………………..
3.1. Машинное кодирование десятичных чисел ……………………………….
3.2. Выполнение арифметических операций
с десятичными числами ……….……………………………………………
3.2.1. Сложение десятичных чисел в ЭВМ ……………………………………….
3.2.2. Умножение десятичных чисел в ЭВМ ……………………………………..
3.2.3. Ускорение умножения в D-кодах …………………………………………..
3.2.4. Деление десятичных чисел в ЭВМ …………………………………………
4. Алгоритмические модели выполнения арифметических операций…
4.1. Проектирование универсального алгоритма перевода чисел
в разные системы счисления ……………………………………………….
4.2. Моделирование алгоритма сложения двоичных чисел …………………..
4.3. Проектирование алгоритма умножения чисел …………………………….
4.4. Разработка алгоритма ускоренного умножения с обработкой
за один такт трех разрядов множителя …………………………………….
4.5. Проектирование алгоритма деления чисел ………………………………..
4.6. Разработка алгоритма ускоренного выполнения операции деления
с анализом за один такт двух разрядов делителя …………………………
4.7. Разработка алгоритма вычисления квадратного корня ……………………
5. Математическая логика и синтез комбинационных схем ……………
5.1. Соответствия и предикаты ………………………………………………….
5.1.1. Соответствия …………………………………………………………………
5.1.2. Логические функции ………………………………………………………..
5.1.3. Признаки ……………………………………………………………………..
5.1.4. Бинарные отношения…………………………………………………………
5.2. Булевы функции ……………………………………………………………..
5.2.1. Логические операции соединения…………………………………………..
5.2.2. Булевы формулы……………………………………………………………..
5.2.3. Совершенные дизъюнктивные нормальные формы ………………………
5.2.4. Булева алгебра ……………………………………………………………….
5.2.5. Конъюнктивные нормальные формы ……………………………………
5.2.6. Классы булевых функций. Понятие базиса…………………………………
5.2.7. Минимизация булевых функций……………………………………………
5.3. Методика синтеза комбинационных схем на логических элементах……..
5.3.1. Логические элементы………………………………………………………..
5.3.2. Общий алгоритм построения комбинационных схем……………………..
5.3.3. Синтез КС в классическом базисе…………………………………………..
5.3.4. Синтез КС в базисах «И-НЕ», «ИЛИ-НЕ»…………………………………
5.3.5. Реализация КС в базисе Жегалкина…………………………………………
5.3.6. Синтез составных КС………………………………………………………..
Заключение………………………………………………………………….
Библиографический список………………………………………………

ПРЕДИСЛОВИЕ

В учебных планах подготовки дипломированных специалистов по специальности 220100 – «Вычислительные машины, комплексы, системы и сети» и направлению 552800 – «Информатика и вычислительная техника» дисциплины «Дискретная математика», «Введение в информатику и вычислительную технику», «Алгоритмические языки и программирование» входят в состав фундаментального цикла дисциплин, формирующих у студентов представление о базовых понятиях информатики и вычислительной техники как о предмете их дальнейшей профессиональной деятельности. Изучение указанных дисциплин и овладение навыками разработки и моделирования алгоритмов реализации арифметических и логических компьютерных операций, синтеза логических схем создает теоретическую базу для изложения таких дисциплин, как «Теория автоматов», «Организация ЭВМ и систем», «Микропроцессорные системы» и других специальных курсов.

В главах 1, 2, 3, подготовленных профессором В.И. Потаповым, изложены основы двоичной и десятичной компьютерной арифметики, алгоритмы выполнения арифметических операций в ЭВМ для двоичных чисел с фиксированной и плавающей запятой (точкой) и для двоично-десятичных чисел в D-кодах. Рассмотрены многочисленные методы ускоренного выполнения арифметических операций в ЭВМ в двоичной и в двоично-десятичной системе счисления.

Глава 4, подготовленная доцентом О.П. Шафеевой, посвящена вопросам разработки алгоритмических моделей выполнения арифметических операций и моделирования на ПЭВМ спроектированных алгоритмов.

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

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

В настоящей книге рассматриваются методы быстрого выполнения различных видов вычислений, рассказывается о реализации быстрых алгоритмов как в виде логических схем — математической модели реальных электронных микросхем, так и в виде компьютерных программ. Исследуются также вопросы о том, как измерить сложность того или иного вычислительного алгоритма и оценить время его работы на компьютере. Большая часть материала книги доступна всем, кто знаком лишь со школьным курсом математики, но и опытный читатель может найти в этой книге кое-что новое для себя.
Книга написана на основе лекций, которые автор в разное время читал учащимся физико-математической Школы им. А. Н. Колмогорова при МГУ, на Малом и Большом мехмате, а также на факультетах информационной безопасности и информатики РГГУ.

Быстрое деление многочленов.

Здесь будет показано, что деление можно выполнять с той же по порядку сложностью, что и умножение. Впервые это было сделано немецким математиком Фолкером Штрассеном в 70-е гг. XX века. Мы приведем другое доказательство, которое далее почти дословно будет перенесено и на случай деления многозначных чисел.

Обозначим D0(m, n) наименьшее количество арифметических операций над числами, требующихся для нахождения неполного частного при делении многочлена степени не выше га на многочлен степени n, а через D(m, n) — сложность деления этих многочленов, в которую включается также сложность нахождения остатка от деления и произведения неполного частного на делитель. Очевидно, что при m < n обе эти величины равны нулю. Далее для удобства изменим определение M(n, m), заменив его на М(n + 1, m + 1), т. е. обозначим М(m, n) сложность умножения двух многочленов степеней m и n соответственно.

Содержание

От автора
Введение
Глава 1. Школьные алгоритмы арифметических операций с многочленами
Глава 2. Школьные алгоритмы сложения и умножения чисел
Глава 3. Умножение столбиком нескольких чисел
Глава 4. Переносы при сложении двоичных чисел и теорема Куммера
Глава 5. Минимальные формы двоичной записи с цифрами 0 и ± 1 и первая попытка уменьшить сложность умножения
Глава 6. Быстрое умножение многочленов
Глава 7. Быстрое умножение чисел
Схемная реализация метода Карацубы для умножения двоичных чисел
Глава 8. Деление многозначных чисел
Глава 9. Как представляются отрицательные числа в компьютере
Глава 10. SRT-деление
Глава 11. Быстрое деление многочленов
Глава 12. Быстрое деление чисел
Глава 13. Сравнение сложности умножения, деления, возведения в квадрат и извлечения квадратного корня
Глава 14. О сложности преобразования чисел из одной системы в другую
Глава 15. Модулярная арифметика и китайская теорема об остатках
Глава 16. Сложность операций модулярной арифметики
Как найти остаток от деления, не вычисляя частное
Глава 17. Умножение и деление на константы
Глава 18. Некоторые быстрые алгоритмы работы с битами
Маленькие хитрости в работе с битами
Глава 19. Вычисление некоторых целочисленных элементарных функций
Целочисленный квадратный корень
Целочисленные логарифмы
Глава 20. Быстрые операции с дробно-рациональными функциями
Быстрое сложение дробно-рациональных функций
Быстрый китайский алгоритм
Быстрая интерполяция
Еще о быстром умножении многочленов
Глава 21. Варианты алгоритма Евклида
Алгоритм Евклида с выбором минимального остатка
Бинарный алгоритм Евклида
Глава 22. Еще о схеме Горнера
Глава 23. Что можно вычислить на счетах
Литература.

Бесплатно скачать электронную книгу в удобном формате, смотреть и читать:


Скачать книгу Занимательная компьютерная арифметика, Быстрые алгоритмы операций с числами и многочленами, Гашков С.Б., 2012 — fileskachat.com, быстрое и бесплатное скачивание.

Скачать pdf
Ниже можно купить эту книгу по лучшей цене со скидкой с доставкой по всей России.

К. Поляков, Компьютерная арифметика 1.Особенности представления чисел в компьютереОсобенности представления чисел в компьютере 2.Хранение в памяти целых чиселХранение в памяти целых чисел 3.Операции с целыми числамиОперации с целыми числами 4.Хранение в памяти вещественных чиселХранение в памяти вещественных чисел 5.Операции с вещественными числамиОперации с вещественными числами

К. Поляков, Компьютерная арифметика Тема 1. Особенности представления чисел в компьютере

Компьютерная арифметика К. Поляков, Предельные значения чисел В математике нет предельных значений! В компьютере – конечное число деталей, ограниченное количество разрядов. Какой диапазон? ? 10000?

Компьютерная арифметика К. Поляков, Предельные значения чисел 4 система счисления с основанием B K разрядов Переполнение разрядной сетки это ситуация, когда число, которое требуется сохранить, не умещается в имеющемся количестве разрядов вычислительного устройства.

Компьютерная арифметика К. Поляков, Вещественные числа 5 система счисления с основанием B F разрядов в дробной части Какой диапазон? ?

Компьютерная арифметика К. Поляков, Неточность представления 6 Не все вещественные числа могут быть представлены в компьютере точно! ! 0,3211 0,3212 0,3214

Компьютерная арифметика К. Поляков, Дискретность 7 1.Целые числа дискретны. 2.Вещественные числа непрерывны. 3.Компьютер работает только с дискретными данными. 4.При дискретизации может происходить потеря информации (искажение данных). 5.Большинство трудностей связано с кодированием вещественных чисел. Для хранения вещественных чисел нужна дискретизация! !

К. Поляков, Компьютерная арифметика Тема 2. Хранение в памяти целых чисел

Компьютерная арифметика К. Поляков, Целые числа без знака (unsigned) 9 78 = Беззнаковые данные – не могут быть отрицательными биты младший старший старший полубайт старшая цифра младший полубайт младшая цифра 4 16 E = 4E 16 = N

Компьютерная арифметика К. Поляков, Целые числа без знака 10 01…127128… …7F …FF … … C0 16 FF FF 16 C В газете «Информатика» (1/2011) есть опечатки на этой схеме: вместо «64» набрано «-64»!

Компьютерная арифметика К. Поляков, Целые числа без знака: диапазон 11 KX min X max типы данных byte (Паскаль) unsigned char (Си) word (Паскаль) unsigned short (Си) cardinal (Delphi) unsigned int (Си) ?

Компьютерная арифметика К. Поляков, Целые числа со знаком 12 Сколько места требуется для хранения знака? ? Старший (знаковый) бит числа определяет его знак. Если он равен 0, число положительное, если 1, то отрицательное. Прямой код: 78 = – 78 = –

Компьютерная арифметика К. Поляков, Целые числа со знаком 13 Идея: «– 1» должно быть представлено так, чтобы при сложении с числом «1» получить 0. Как кодируется «-1»? ? Для 8-битных чисел: код числа «–X» равен двоичному коду числа 256 – X (дополнение до 256). При K-битном кодировании дополнительный код числа «–X» равен двоичному коду числа 2 K – X (дополнение до 2 K). !

Компьютерная арифметика К. Поляков, Как построить дополнительный код? 14 Алгоритм А0: перевести число 2 K – X в двоичную систему счисления. для вычислений требуется K+1 разряд Алгоритм А1: 1)перевести число X в двоичную систему счисления; 2)построить обратный код, выполнив инверсию всех битов (заменить 0 на 1 и наоборот); 3)к результату добавить 1. Алгоритм А1: 1)перевести число X в двоичную систему счисления; 2)построить обратный код, выполнив инверсию всех битов (заменить 0 на 1 и наоборот); 3)к результату добавить = инверсия +1+1

Компьютерная арифметика К. Поляков, Как построить дополнительный код? 15 Алгоритм А2: 1)перевести число X-1 в двоичную систему счисления; 2)выполнить инверсию всех битов. Алгоритм А2: 1)перевести число X-1 в двоичную систему счисления; 2)выполнить инверсию всех битов = 77 = инверсия Алгоритм А3: 1)перевести число X в двоичную систему счисления; 2)выполнить инверсию всех старших битов числа, кроме младшей единицы и нулей после нее. Алгоритм А3: 1)перевести число X в двоичную систему счисления; 2)выполнить инверсию всех старших битов числа, кроме младшей единицы и нулей после нее. 78 = инверсия

Компьютерная арифметика К. Поляков, Целые числа со знаком 16 –128–127…–1 0… …FF …7F … … F С FF – 128 – 1– – – – 128 – F 16 С FF

Компьютерная арифметика К. Поляков, Целые числа co знаком: диапазон 17 KX min X max типы данных 8– shortInt (Delphi) char (Си) 16– smallInt (Delphi) short (Си) 32 – integer (Delphi) int (Си) 64 – – 1 int64 (Delphi) long long (Си)

К. Поляков, Компьютерная арифметика Тема 3. Операции с целыми числами

Компьютерная арифметика К. Поляков, Сложение и вычитание 19 Операции с положительными и отрицательными числами выполняются по одинаковым алгоритмам! ! Вычитание = сложение с дополнительным кодом вычитаемого! !

Компьютерная арифметика К. Поляков, Переполнение 20 знаковый бит бит переноса Если бит переноса не совпадает со знаковым битом результата, произошло переполнение и результат неверный. ! СS СS

Компьютерная арифметика К. Поляков, Умножение Умножение выполняется в помощью сложения и сдвига. ! × ×

Компьютерная арифметика К. Поляков, Поразрядные логические операции 22 Поразрядные операции выполняются с отдельными битами числа и не влияют на остальные. Сложение – это поразрядная операция? ? регистр Операция «НЕ» (инверсия, not): R not R

Компьютерная арифметика К. Поляков, Логическая операция «И» (and, &) 23 DMD and M данные маска Маска – константа, которая определяет область применения логической операции к битам многоразрядного числа. С помощью операции «И» можно сбросить (установить в ноль) биты, для которых маска равна 0! ! D D and M M AA 16 6С AA 16 and 6C 16 = ?

Компьютерная арифметика К. Поляков, Логическая операция «ИЛИ» (or, |) 24 DMD or M С помощью операции «ИЛИ» можно записать единицу в биты, для которых маска равна 1! ! D D or M M AA 16 6С 16 EE AA 16 or 6C 16 = ?

Компьютерная арифметика К. Поляков, Операция «исключающее ИЛИ» (xor, ^) 25 DMD xor M С помощью операции «исключающее ИЛИ» можно инвертировать биты, для которых маска равна 1! ! D D xor M M AA 16 6С 16 C AA 16 xor 6C 16 = ?

Компьютерная арифметика К. Поляков, Шифрование с помощью xor 26 Идея: (A xor B) xor B = Операция «исключающее ИЛИ» обратима, то есть ее повторное применение восстанавливает исходное значение! ! A Текст: 2*2=4 Коды символов: «2» = = «*» = 2A 16 = «=» = 3D 16 = «4» = =

Компьютерная арифметика К. Поляков, Шифрование с помощью xor 27 Исходный текст: 2*2=4 «2» xor = «*» 2A 16 xor = «=» 3D 16 xor = «4» xor = «%» 3D 16 «=» 2A 16 «*» «#» Маска: 23 = = Зашифрованный текст: %=%*# Расшифровка: «%» xor = «=» 3D 16 xor = «*» 2A 16 xor = «#» xor = «2» 2A 16 «*» 3D 16 «=» «4» В газете «Информатика» (1/2011) есть опечатка: вместо «%=%*#» набрано «%=%7*7#»!

1; N = N > 1; N:= N shl 1; N:= N shr 1; N:= N shl 1; N:= N shr 1″ title=»Компьютерная арифметика К. Поляков, 2010 http://kpolyakov.narod.ru Логический сдвиг 28 10011011 Влево: 0011011010 бит переноса С Вправо: 10011011 01001101 1 С 0 Си: Паскаль: N = N > 1; N = N > 1; N:= N shl 1; N:= N shr 1; N:= N shl 1; N:= N shr 1″ class=»link_thumb»>
28

Компьютерная арифметика К. Поляков, Логический сдвиг Влево: бит переноса С Вправо: С 0 Си: Паскаль: N = N > 1; N = N > 1; N:= N shl 1; N:= N shr 1; N:= N shl 1; N:= N shr 1; shift left shift right
1; N = N > 1; N:= N shl 1; N:= N shr 1; N:= N shl 1; N:= N shr 1″>
1; N = N > 1; N:= N shl 1; N:= N shr 1; N:= N shl 1; N:= N shr 1; shift left shift right»>
1; N = N > 1; N:= N shl 1; N:= N shr 1; N:= N shl 1; N:= N shr 1″ title=»Компьютерная арифметика К. Поляков, 2010 http://kpolyakov.narod.ru Логический сдвиг 28 10011011 Влево: 0011011010 бит переноса С Вправо: 10011011 01001101 1 С 0 Си: Паскаль: N = N > 1; N = N > 1; N:= N shl 1; N:= N shr 1; N:= N shl 1; N:= N shr 1″>
title=»Компьютерная арифметика К. Поляков, 2010 http://kpolyakov.narod.ru Логический сдвиг 28 10011011 Влево: 0011011010 бит переноса С Вправо: 10011011 01001101 1 С 0 Си: Паскаль: N = N > 1; N = N > 1; N:= N shl 1; N:= N shr 1; N:= N shl 1; N:= N shr 1″>

Компьютерная арифметика К. Поляков, Логический сдвиг Влево: Вправо: Если число нечётное? ? Логический сдвиг влево (вправо) – это быстрый способ умножения (деления без остатка) положительного числа на 2. Если число отрицательное? ?

Компьютерная арифметика К. Поляков, Арифметический сдвиг (вправо) 30 –12 Если число нечётное? ? С – 6 Примеры: –20 –15 –11 –3–3 –1 –10 –8 –6 –2 –1 Арифметический сдвиг вправо – деление на 2 нацело с округлением «вниз» (к ближайшему меньшему целому).

Компьютерная арифметика К. Поляков, Циклический сдвиг Влево: Вправо: Циклический сдвиг предназначен для последовательного просмотра битов без потери данных. !

Компьютерная арифметика К. Поляков, Пример 32 Задача: в целой переменной N (32 бита) закодирована информация о цвете пикселя в RGB: Записать в переменные R, G, B составляющие цвета. Вариант 1: 1.Обнулить все биты, кроме G. Маска для выделения G: 0000FF Сдвинуть вправо так, чтобы число G передвинулось в младший байт. 0RGB Си: G =(N & 0xFF00) >> 8; Паскаль: G:=(N and $FF00) shr 8;
> 8; Паскаль: G:=(N and $FF00) shr 8;»>

Компьютерная арифметика К. Поляков, Пример 33 Вариант 2: 1.Сдвинуть вправо так, чтобы число G передвинулось в младший байт. 2.Обнулить все биты, кроме G. Маска для выделения G: FF 16 0RGB Си: G =(N >> 8) & 0xFF; Паскаль: G:=(N shr 8) and $FF; Как решить, используя только сдвиги? ?
> 8) & 0xFF; Паскаль: G:=(N shr 8) and $FF; Как решить, используя только сдвиги? ?»>

Компьютерная арифметика К. Поляков, Пример 34 0RGB Си: R =B =R =B = R =B =R =B = Паскаль: R:= B:= R:= B:=


Компьютерная арифметика К. Поляков, Хранение вещественных чисел 36 С фиксированной запятой (в первых ЭВМ): целая частьдробная часть для больших и маленьких чисел нужно масштабирование 0,0 С плавающей запятой (автоматическое масштабирование): знакпорядок P значащая часть Z положение запятой цифры числа 1,2345· ,2345·10 17

Компьютерная арифметика К. Поляков, Хранение вещественных чисел 37 Теоретически оптимальный вариант (целая часть = 0): 0, = 0,12345· ,345 = 0,12345·10 2 X 10 всегда 0 один разряд расходуется впустую! Экономный вариант (целая часть от 1 до B): основание системы счисления X 10 0, = 1,2345· ,345 = 1,2345·10 1 повышение точности при конечном числе разрядов

Компьютерная арифметика К. Поляков, Число обычной точности (single) ,25 = ,01 2 = -1, ·2 4 знакпорядокзначащая часть single: 4 байта = 32 бита мантисса = дробная часть Z порядок со смещением знак p = = 131 = С18A000 0 для single

Компьютерная арифметика К. Поляков, Диапазон вещественных чисел 40 типдиапазон число десятичных значащих цифр размер (байт) single1,4· – 3,4· double4,9· – 1,8· extended3,6· – 1,2· Extended – тип для вычислений в сопроцессоре, единица в значащей части не скрывается. Single, double – только для хранения.

Компьютерная арифметика К. Поляков, Сложение и вычитание 42 1)порядки выравниваются до большего 2)значащие части складываются (или вычитаются) 3)результат нормализуется Как сложить два числа с плавающей запятой? ! 1,2345·10 – 5 + 1,2345·10 5 = ? Пример: 7,25 = 111,01 2 = 1, ·2 2 1,75 = 1,11 2 = 1,11 2 ·2 0 1,75 = 0, ·2 2 1,011120,01 2 ·2 2 = 1,001 2 ·2 3 Почему порядки выравнивают до большего? ?

Компьютерная арифметика К. Поляков, Умножение и деление 43 Как умножить два числа с плавающей запятой? ! 1,2345·10 – 5 · 1,2345·10 5 = ? 1)значащие части умножаются (или делятся) 2)порядки складываются (или вычитаются) 3)результат нормализуется Пример: 1,75 = 1,11 2 = 1,11 2 ·2 0 6 = = 1,1 2 ·2 2 1,11 2 ·1,1 2 = 10,101 2 ·2 2 = 1, ·2 3 Надо ли выравнивать порядки? ? = = 2

Компьютерная арифметика К. Поляков, Конец фильма ПОЛЯКОВ Константин Юрьевич д.т.н., учитель информатики высшей категории, ГОУ СОШ 163, г. Санкт-Петербург

Понравилась статья? Поделить с друзьями:
  • Использовать тоже название как пишется
  • Использовать невозможно как пишется
  • Использовать втемную как пишется
  • Использована мною как пишется
  • Исполняющий полномочия главы администрации как пишется