Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пример предоставленной теории по Арх ЭВМ ПИ.doc
Скачиваний:
4
Добавлен:
24.11.2019
Размер:
1.12 Mб
Скачать

Урок №1 История развития ЭВМ.

История развития ПК

1640 Паскалина: суммирующая машина Блеза Паскаля

1703 Двоичная система счисления: Лейбниц

1801 Программируемый ткацкий станок: Жозеф Мари Жаккар

1820Разностная машина: Чарльз Бэббидж

1847Булева алгебра: Джордж Буль

1876Аналоговый дифференциальный анализатор: Джеймс Томсон

1890Перфокарта (1890)

1920 Программа обоснования математики Давида Гильберта

1928Минимаксный критерий фон Неймана

1935Алонзо Чёрч разработал основы лямбда-исчислений.

1937 Джон Винсент Атанасов разработал концепцию первой электронно-вычислительной машины.

1941Введён в эксплуатацию компьютер Z3 Конрада Цузе на электромеханических элементах. Создан и тестирован непрограммируемый компьютер Атанасова — Берри для решения систем линейных уравнений.

1942Алан Тьюринг в Блетчли Парке произвёл расшифровку кодов шифровальной машины Энигма.

1943Компьютер Марк I (1943) В Гарварде создан компьютер Марк I на релейных и механических элементах. Создан электронный программируемый компьютер «Colossus-1».

1946Ричард Хэмминг разработал коды Хемминга.

1948Изобретение транзистора: Джон Бардин, Уильям Шокли и Уолтер Браттейн.

1949 Морис Уилкс разработал первый компьютер с ПЗУ для хранения программ: EDSAC.

1950 Алан Тьюринг опубликовал идею теста Тьюринга.

1951Компьютер UNIVAC I (1951) Морис Уилкс изобретает микрокод. Алан Тьюринг разрабатывает на бумаге первую программу, способную сыграть полную игру в шахматы. Джон Преспер Экерт и Джон Уильям Мочли создали компьютер UNIVAC I.

1953Первый компьютер для научных расчётов IBM 701 и первый массовый компьютер IBM 650.

1954 Алан Тьюринг покончил с собой, сьев яблоко, содержащее цианистый калий. Разработка Фортрана, первого языка программирования, имеющего транслятор на компьютере.

1956Первый жёсткий диск IBM RAMAC 305 (1956). Стивен Клини разрабатывает теорему Клини, положившую начало теории автоматов. Ноам Хомский представил докторскую диссертацию, в которой изложил иерархию Хомского, имеющую важное значение в теории автоматов. Разработан алгоритм альфа-бета отсечения Джона Маккарти. IBM выпускает первый жёсткий диск RAMAC 305.

1958 Изобретена интегральная схема: Роберт Нойс и Джек Килби. Разработан язык программирования Лисп: Джон Маккарти. Разработан язык программирования Алгол: Алан Перлис и др.

1959 Михаэль Рабин и Дана Скотт разрабатывают концепцию недетерминированной машины.[2] Эдсгер Дейкстра разработал алгоритм Дейкстры. Джон Бэкус и Питер Наур изобрели формальную систему описания синтаксиса языков программирования — форму Бэкуса — Наура. Роберт Флойд разработал алгоритм Флойда — Уоршелла. Разработан язык программирования КОБОЛ.

1961 Чарльз Хоар разработал алгоритм быстрой сортировки. Фернандо Корбато разработал первую систему разделения времени Compatible Time Sharing System. Дэвид Пауль Грегг запатентовал оптический диск.

1965 Первая экспертная система Эдварда Фейгенбаума. Юрис Хартманис и Ричард Стернс ввели понятие временно́го класса сложности вычислений (f(n)). Чарльз Бахман создаёт теорию сетевых СУБД и разрабатывает одну из первых СУБД. Гордон Мур формулирует закон Мура: «Число транзисторов на кристалле будет удваиваться каждые 24 месяца».

1967 Роберт Флойд разрабатывает методы формальной верификации программ. Мануэль Блюм формулирует теорему ускорения Блюма в теории сложности вычислений.

1969 Марвин Минский и Сеймур Паперт демонстрируют искусственную нейронную сеть на перцептронах. Чарльз Хоар разрабатывает «логику Хоара» — формальную систему проверки корректности программ. Кен Томпсон и Деннис Ритчи разработали ОС Unix. Никлаус Вирт разрабатывает язык программирования Паскаль. Изобретение лазерного принтера в компании Xerox. Разработка стандарта последовательной передачи данных RS-232.

1970 Компания Intel выпускает первую полупроводниковую интегральную схему памяти, DRAM-память (Intel 1103). Эдгар Кодд разрабатывает реляционные модели данных и реляционную алгебру. Терри Виноград представляет программу понимания естественного языка SHRDLU. Основание научно-исследовательского центра Xerox PARC. Никлаус Вирт разрабатывает язык программирования Паскаль. Робин Милнер разрабатывает функциональный язык программирования ML. Джеймс Уилкинсон разрабатывает метод чисел обусловленности. Фирма Sharp освоила выпуск карманных калькуляторов.

Начало эры микрокомпьютеров

1971 Стивен Кук доказывает теорему Кука. Робин Милнер создал первую систему для демонстрации автоматического доказательства теорем. Марциан Хофф разрабатывает первый 4-битный микропроцессор Intel 4004. Джеймс Фергасон разрабатывает жидкокристаллический дисплей.[3]

1972 Кен Томпсон и Деннис Ритчи разработали язык программирования Си. Никлаус Вирт изобретает байт-код. Батлер Лэмпсон в лаборатории Xerox PARC начинает проект по разработке одного из первых ПК Xerox Alto. Ричард Карп публикует доказательство NP-полноты для 21 задачи. Основание компании SAP.

1973 Xerox Alto — первый в мире компьютер с графическим интерфейсом, разработанный в Xerox PARC (1973)

1974 Микрокомпьютер Альтаир 8800 с интерпретатором языка Altair BASIC (1974)

Первый 8-битный центральный процессор Intel 8008.

Билл Гейтс и Пол Аллен написали интерпретатор языка Altair BASIC для микрокомпьютера Альтаир 8800.

Гари Кидалл разработал ОС CP/M.

1975 Разработка алгоритма Кнута — Морриса — Пратта Выпуск первого процессора IBM 801 с RISC-архитектурой, разработанной Джоном Коком. Билл Гейтс и Пол Аллен основали фирму Microsoft.

1976 Первый ПК Apple I, разработка Стива Джобса и Стива Возняка (1976)

Первый суперкомпьютер Cray-1.

Стив Джобс и Стив Возняк основали корпорацию Apple и начали выпуск Apple I.

Шун-ичи Ивасаки предложил перпендикулярный способ записи данных на винчестер.

1977 Commodore PET (1977)

Появившийся в 1977 году Apple II предлагал пользователям интегрированную клавиатуру, цветную графику, звук, пластиковый корпус, восемь слотов расширения и два дисковода.

1978

Intel выпустила, первый 16-битный центральный процессор Intel 8086.

[править] 1980

ПК IBM PC 5150 (1981)

Изобретение компакт-диска (CD)

Клайв Синклер выпустил недорогой домашний ПК ZX80.

[1981

Адам Осборн выпустил «портативный» компьютер Osborne-1 с полным комплектом программного обеспечения.

Корпорация IBM выпустила свой первый ПК IBM PC, на базе 16-битных процессоров (Intel 8088), но имевший 8-битную шину данных.

Microsoft: разработка ОС MS-DOS.

Выпуск ПК ZX81

Корпорация Xerox PARC разработала графический интерфейс пользователя WIMP.

1982

Выпуск домашнего компьютера Commodore 64.

Корпорация IBM выпустила ПК IBM PC, полностью на базе 16-битных процессоров Intel 80286, которые очень скоро стали стандартом ПК.

Compaq анонсировала свой первый продукт, переносной IBM PC совместимый персональный компьютер Compaq Portable.

Microsoft: выпуск ОС MS-DOS.

Скотт Фальман изобретает смайлики.

1983

Apple: выпуск ПК Apple Lisa.

Разработка языков программирования C++ и Turbo Pascal.

Министерство обороны США делит сеть ARPANET на две ветви: одна из них для гражданских применений, а другая для военных целей.

Протокол TCP/IP заменяет NCP, и термин «интернет» закрепляется за сетью ARPANET.

Стандартизация языка программирования Ада.

Основание фирмы Borland.

Появилась первая версия текстового редактора Word.

Кризис видеоигровой индустрии 1983 года в США.

Разработан стандарт для цифрового интерфейса музыкальных инструментов MIDI.

1984

Компьютер Macintosh 128K (1984)

Мануэль Блюм и Шафи Гольдвассер разработали криптосистему Блюма-Гольдвассера.

Apple: выпуск ПК Macintosh и ОС Mac OS.

Фонд свободного программного обеспечения: основание фонда, запуск проекта GNU и лицензии GPL.

Основание компании Cisco Systems.

Motorola анонсировала выпуск 32-битных микропроцессоров 68020.

Выпуск первого лазерного принтера компании HP.

1985Компакт-диск CD-ROM (1985)

Intel выпустила, первый 32-битный центральный процессор Intel 80386.

Разработка стандарта для представления чисел с плавающей запятой: IEEE 754.

Стив Джобс основал компанию NeXT.

Фирма Commodore выпустила ПК Amiga 1000 с ОС AmigaOS.

Выпуск ПК Atari ST.

Microsoft: выпуск ОС Windows 1.0.

Появление CD-ROM.

1986

Разработка генератора псевдослучайных чисел: «алгоритм Блюма — Блюма — Шуба».

Разработка программы дефрагментации дисков Diskeeper.

Выпуск первого RISC процессора с частотой 8 Mhz.

Выпуск ПК Apple IIgs фирмы Apple и ПК Deskpro 386 фирмы Compaq.

Фирма Adobe выпускает векторный графический редактор Adobe Illustrator, в котором впервые использовался язык описания страниц postscript.

Apple: выпуск ПК Mac plus.

1987

Ричард Карп и Майкл Рабин разработали алгоритм Рабина — Карпа поиска подстроки в тексте.

Выпуск ОС OS/2 корпорации IBM.

Microsoft: выпуск версии 2.0 ОС Windows.

Эпоха интернета и всемирной паутины

1989

Выпуск ОС NeXTSTEP корпорации NeXT.

Начало использования интернет-протокола TCP/IP широкой общественностью.

Intel выпустила, 32-битный скалярный x86-совместимый процессор четвёртого поколения Intel i486 (Intel 80486), построенный на гибридном CISC-RISC ядре. Частота процессоров достигла рекордных значений — 100 МГц. Тогда в первые в процессор был встроен первичный Кэш-L1: от 8-16 Кбайт, а также разработчики отказались от внешнего сопроцессора.

1990

Первый веб-сервер NeXT Куб Стива Джобса (1990)

Жан-Луи Гассье основывает корпорацию BeOS.

Первый веб-сервер NeXT Cube Стива Джобса

1991

Linux: разработка первого ядра версии 0.01 ОС Linux.

Apple: выход ОС System 7.

1992

Microsoft: выход Windows 3.1 и 3.11

[1993

Выпуск микропроцессора Pentium компании Intel.

Microsoft: выпуск ОС Windows NT.

Интернет: выход первого навигатора NCSA Mosaic по всемирной паутине.

1994

Apple: выпуск рабочей станции Power Macintosh на базе микропроцессора PowerPC.

Интернет: разработка браузера Netscape.

1996

Microsoft: выход ОС Windows NT 4.

Microsoft: появился интернет-обозреватель Internet Explorer.

Linux: выход версии 2.0 ядра ОС Linux.

Linux: появился Tux — талисман Linux.

1997

Apple: выход ОС Mac OS 8

Появление электронной коммерции во Франции.

1998

Моноблочный ПК iMac корпорации Apple (1998)

Apple: возвращение Стива Джобса в Apple.

Apple: выпуск моноблочного ПК iMac.

Microsoft: выход ОС Windows 98.

1999

Linux: выход версии 2.2 ядра ОС Linux.

Apple: выход ОС Mac OS 9.

2000

Microsoft: выход ОС Windows 2000 и ОС Windows Me.

Запуск проектов UDDI и ebXML, направленных на интеграцию электронного бизнеса в мировом масштабе.

2001

Linux: выход версии 2.4 ядра ОС Linux.

Microsoft : выход ОС Windows XP.

Apple: выпуск ОС Mac OS X 10.0 Гепард и ОС Mac OS X 10.1 Пума.

Джимми Уэльс основал фонд Википедия.

Появились гибкие дисплеи[4] [5]

Разработана концепция распределенной сети миниатюрных сенсоров: «умная пыль».[6]

2002

Выпущена версия 1 бесплатного офисного пакета OpenOffice.org.

MorphOS v.1.0: проприетарная многозадачная ОС , предназначенная для линейки процессоров PowerPC.

Microsoft: выпуск серверной ОС Windows Server 2003.

Apple: выход ой системы Mac OS X 10.2 Ягуар.

Разработан Earth Simulator — самый быстрый суперкомпьютер с 2002 по 2004 год: NEC для японского агентства аэрокосмических исследований.

Проекционная клавиатура[7]

2003

Apple: выход ПК Power Mac G5 и ОС Mac OS X 10.3 Пантера.

Первый Всемирный саммит по информационному обществу в Женеве.

Linux: выход версии 2.6 ядра ОС Linux, последней стабильной версии в настоящее время.

Разработан стереоскопический 3D-дисплей: компания A.C.T. Kern.[8]

Разработан мозговой интерфейс (без вживления электродов).[9]

2004

Портативный ноутбук фирмы IBM (2004)

Mozilla: выход версии 1.0 свободно распространяемого браузера Mozilla Firefox.

Создан полевой транзистор на углеродной нанотрубке: Infineon.[10]

2005

Вышла версия 2 бесплатного офисного пакета OpenOffice.org. Он стал первым офисным пакетом, основанным на формате OpenDocument.

Apple: выход ОС Mac OS X 10.4 Тигр; объявление о переходе с архитектуры PowerPC на архитектуру x86.

Появились ноутбуки на топливных элементах[11]

Разработан прототип полевого транзистора на одной молекуле[12]

2006

Microsoft: выход браузера Microsoft Internet Explorer 7.0, переименованный по этому случаю в Windows Internet Explorer.

Mozilla: выход версии 2.0 браузера Mozilla Firefox.

Открытый формат документов для офисных приложений OpenDocument становится стандартом ISO.

Разработан терагерцовый транзистор.[13]

Разработан эмиссионный дисплей на углеродных нанотрубках.[14]

2007

Microsoft: выпуск ОС Windows Vista.

Apple: выпуск ОС Mac OS X 10.5 «Леопард».

Суперкомпьютер Blue Gene/P производительностью 1 петафлопс (квадриллион операций в секунду).[15]

Появились компьютерные системы распознавания лиц, превосходящие возможности человека [16]

2008

Apple: выход ультрапортативного ноутбука MacBook Air и цифрового сетевого мультимедийного проигрывателя Apple TV.

Microsoft: Билл Гейтс покидает пост председателя совета директоров корпорации Microsoft.

Mozilla: выход версии 3.0 браузера Mozilla Firefox.

Выход версии 3.0 свободно распространяемого пакета офисных приложений OpenOffice.org.

Суперкомпьютер IBM Roadrunner превысил производительность в 1 петафлоп (квадриллион операций в секунду) и стал самым быстрым компьютером в мире.[17]

2009

Корпорация Oracle покупает Sun Microsystems

Microsoft выпускает ОС Windows 7

Виртуализация серверов и систем хранения.

Суперкомпьютер Cray XT5 (Jaguar) стал самой производительной в мире компьютерной системой

Урок№2 Системы счисления

Система счисления - это способ записи чисел с помощью заданного набора специальных символов.

Существуют позиционные и непозиционные системы счисления. В непозиционных системах счисления вес цифры (то есть тот вклад, который она вносит в значение числа) не зависит от ее позиции в записи числа. Так, в римской системе счисления в числе ХХХII (тридцать два) вес цифры Х в любой позиции равен просто десяти. В позиционных системах счисления вес каждой цифры изменяется в зависимости от ее положения (позиции) в последовательности цифр, изображающих число. Например, в числе 357,6  первый символ  3 означает 3 сотни; второй символ 5 означает 5 десятков, третий символ  7 означает 7 единиц, а четвертый символ  6 означает 6 десятых долей единицы.

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

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

В десятичной системе счисления для изображения чисел используются 10 символов: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Поэтому основанием десятичной системы счисления является число 10.

В двоичной системе счисления для изображения чисел используется 2 символа: 0,  1. Поэтому основанием двоичной системы счисления является число 2.

В восьмеричной системе счисления для изображения чисел используются 8 символов: 0, 1, 2, 3, 4, 5, 6, 7. Поэтому основанием восьмеричной системы счисления является число 8.

В шестнадцатеричной системе счисления для изображения чисел используются 16 символов: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, А, B, C, D, E, F, где:

А = 10;   B = 11;  C = 12;  D = 13;  E = 14;  F = 15.

Поэтому основанием шестнадцатеричной системы счисления является число 16.

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

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

Например,  переведём число 75 из десятичной системы в двоичную, восьмеричную и шестнадцатеричную системы счисления:

 

Таким образом, число 7510 = 10010112 = 1138 = 4В16

 

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

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

Например,  переведём дробное число 0, 96 из десятичной системы в двоичную, восьмеричную и шестнадцатеричную системы счисления:

 

 

Таким образом, число 0,9610 = 0,1111012 = 0,753418 = 0.F5C28F16

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

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

 

Например:

1) переведём число 101100, 10112  из двоичной системы счисления в десятичную систему счисления:

101100, 1012 = 1*25 + 0*24 + 1*23 + 1*22 + 0*21 + 0*2+ 1*2-1 + 0*2-2 + 1*2-3  =  = 32 + 0 + 8 + 4 + 0 + 0 + 0,5 + 0 + 0,125 = 44, 62510

 

2) переведём число 375, 6248  из восьмеричной системы счисления в десятичную систему счисления:

375, 6248  = 3*82 + 7*81 + 5*80 + 6*8-1 + 2*8-2 + 4*8-3 =

= 192 + 56 + 5 + 0,75 + 0,03125 + 0,00781835938 = 253, 7890683593810

 

3) переведём число ACF, 5D16  из шестнадцатеричной системы счисления в десятичную систему счисления:

ACF, 5D16  = 10*162 + 12*161 + 15*160 + 5*16-1 + 13*16-2 = = 256 + 192 + 15 + 0,3125 + 0,050775 = 463, 36327510

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

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

Например, переведём число 1101111100, 111001112 в восьмеричную систему счисления.

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

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

Например, переведём число 6374, 258  в двоичную систему счисления.

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

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

Например, переведём число 1101111100, 111001112 в шестнадцатеричную систему счисления.

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

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

Например, переведём число АЕС2, 3В16  в двоичную систему счисления.

Двоичная арифметика.

 

Сложение чисел в двоичной системе счисления.

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

1 + 0 = 1

0 + 1 = 1

0 + 0 = 0

1 + 1 = 10

Например, сложим числа 11011112 и 10111012

 

Умножение чисел в двоичной системе счисления.

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

1 * 0 = 0

0 * 1 = 0

0 * 0 = 0

1 * 1 = 1

 

Например, перемножим числа 111112    и    1012

 

Вычитание чисел в двоичной системе счисления.

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

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

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

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

На втором этапе вычитаемое записывается в обратном коде. Для этого все нули у вычитаемого заменяются на 1 а все единицы у вычитаемого заменяются на 0.

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

На этом же этапе происходит анализ полученного ответа.

 

Вычтем из большего числа меньшее число:    110111101 – 10110112

 

Анализ ответа говорит о том, что ответ положителен (так как в знаковом разряде стоит 0), и поэтому он записан в прямом коде.

Таким образом, ответ:  1011000102

 

Вычтем из меньшего числа большее число:      110111 – 11101101

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

Таким образом, окончательный ответ:  - 101101102

Урок №3 Форматы данных и машинные коды чисел.

Знак числа обычно кодируется двоичной цифрой: знак "+" кодируется 0, знак "-" кодируется 1. Если двоичные числа —45 и 31 в форме с запятой, фиксированной после нулевого разряда, сложить, то получим неверный результат 1100.1100 или в десятичной системе счисления -45+31 =-76 (10101101+00011111=11001100). Чтобы арифметические операции над знаковыми числами в ЭВМ можно было бы производить точно также, как и с беззнаковыми переменными, отрицательные числа представляются в дополнительном коде.

Следует упомянуть, что aльтepнaтивными являютcя представления в прямом и обратном коде.

Прямой код числа N – = -(abs(N). Такой код и был использован в рассмотренном выше примере. Недостатки такого представления:

- операцию вычитания нельзя заменить операцией сложения;

- представление числа 0 неоднозначно.

Обратный код числа получается инверсией двоичных разрядов. Через а обозначим двоичный разряд числа, а через а* - инверсию двоичного разряда (если а=1, то а*=0 и если а=0, то а*=1). Правило получения обратного кода:

если N>0, то = 0aaaaaaa;

если N<0, то =1 а* а* а* а* а* а* а* а*,

если N=0, то имеет место неоднозначность или .

Например, число 11 в обратном коде представляется как 0.1011, а число с=-7 будет представлено как 1.1000. Сложим эти числа:

0.1011+1.1000= 0.0011+ единица переноса из старшего разряда.

Если единицу переноса из старшего разряда игнорировать, то результат сложения неверный: 11-7=3. Чтобы получить верный результат, необходимо единицу переноса добавить к младшему разряду результата: 0.1011+1.1000=0.0011+0.0001=0.0100 (11-7=4).

Следовательно,

- представление 0 в обратном коде неоднозначно;

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

В дополнительном коде положительное число представляется также, как в прямом и обратном кодах, т.е. при N>0, = 0aaaaaaa.

Чтобы получить дополнительный код отрицательного числа:

1) надо взять его положительную форму (взять прямой код положительного числа);

2) обратить каждый бит (иначе говоря, заменить в представлении числа 0 на 1 и 1 на 0);

3) добавить к полученному числу 1 младшего разряда. Например, представим в дополнительном коде число-32:

1) положительная форма числа –0.00100000;

2) обратим биты –1.11011111;

3) добавим 1 —1.11011111 +0.00000001

получим 1.11100000 - дополнительный код числа.

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

Недостаток такого представления - при использовании дополнительного кода отрицательное число становится трудно расшифровать. Однако дело облегчается тем, что положительную форму отрицательного числа в дополнительном коде можно получить аналогично вышеописанной методике, выполнив пункты 2 и 3. Проверим на рассмотренном выше примере:

2) обращаем биты 000011111;

3) добавляем 1 + 0.00000001 получим 0.00100000.

Выполнение арифметических операций в компьютере

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

Таблицы для двоичной арифметики будут следующими:

Сложение

0+0=0, 0+1=1, 1+0=1, 1+1=0+единица переноса, 1+1+единица переноса=1+единица переноса;

Вычитание

0-0=0, 1-0=1, 0-1=1+единица заема;

Умножение

0*0=0, 1*0=0, 0*1=0, 1*1=1.

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

определяется наличие переносов из двух старших разрядов числа

- если переносов нет, то результат операции правильный;

- если есть переносы из обеих разрядов, то результат операции тоже правильный;

- если из одного разряда есть перенос, а из другого нет, то результат операции неверный, фиксируется ситуация переполнения.

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

Как видно из вышеизложенного, правило определения факта переноса оказывается достаточно сложным. Для его упрощения в ЭВМ часто используют модифицированные коды: для изображения знака числа используются 2 двоичных разряда, при этом знак "+" изображается комбинацией 00, а знак "-" -комбинацией 11. Тогда ситуация переполнения определяется при разных значениях битовых разрядов знака, а именно, если в знаковых разрядах получаются комбинации 01 или 10 - значит, произошло переполнение.

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

Операция деления представляется последовательностью операций вычитания и сдвига делителя.

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

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

При делении мантисса делимого делится на мантиссу делителя, а порядок результата получается как разница порядка делимого и делителя. При этом, если мантисса делимого больше мантиссы делителя, то частное окажется больше 1 (происходит переполнение). В этом случае частное сдвигается на 1 разряд вправо, а порядок результата увеличивается на 1.

Урок№4 Представление информации в ЭВМ

Минимальная единица информации – бит. Бит - это информация о состоявшемся событии, которое могло иметь только два исхода (1/0). Любая информация, поступающая в ЭВМ (числа, символы текста, изображения, звуки), преобразуется в группы (последовательности) двоичных цифр – единиц и нулей. Каждый двоичный разряд хранится в специальной электронной ячейке, количество которых в ЭВМ строго определено. В одном разряде можно хранить один бит – любое из двух (21) значений: 0 или 1. В двух разрядах – любое из 4 (22) значений: 00, 01, 10, 11. В n разрядах можно хранить любое из 2n значений: от 00…00 до 11…11. Для хранения различной информации используется строго определенное количество двоичных разрядов..

 – бит: 1 двоичный разряд.

Очень малый объем информации. В одном разряде можно хранить какой-то признак (флаг). В 16-ти цветных машинах в одном разряде хранились признаки цвета RGB.

 – байт (Byte - слог): 8 двоичных разрядов. Разряды в байте нумеруются от 0 до 7. В зависимости от модели ЭВМ нумерация производится либо справа налево, либо слева направо.

 

В байте можно хранить натуральные числа от 0 до 255 (00000000 – 11111111)2, что явно недостаточно для выполнения математических операций. Поэтому байт используют для хранения номеров внешних устройств, номеров открытых файлов, кодов символов, частей команд и т.д. Какая информация хранится в байте, определяет программист (язык программирования). При хранении кодов символов каждому символу просто присваивается определенный номер. Существуют международные и национальные стандарты на кодировку символов.

КОИ-7 – (код обмена информацией) использует 7 бит из возможных 8 (коды от 0 до 127). Хранит коды цифр, знаков препинания и основных математических опреаций, прописных и строчных латинских символов. В национальных стандартах строчные латинские буквы и некоторые символы заменяются прописными национальными символами или подается специальный сигнал внешнему устройству для перехода с латинского на национальный шрифт.

 

КОИ-8 - 8-битный код. Коды от 0 до 127 дублируют КОИ-7 с латинскими символами, а с 128 до 255 – с национальными ( [0…127] + 128 ). Гораздо эффективнее КОИ-7, однако не использует все возможности байта, т.к. многие символы верхней части кодовой таблицы дублируют символы нижней части. (33 и 33+128 – "!", 48 и 48+128 – "0" и т.д.).

 

ASCII (DOS-кодировка IBM) – коды от 0 до 127 практически дублируют КОИ-7, а в верхней части таблицы размещают специальные и национальные символы. Дублирование нижней части таблицы исключено.

 

ANSI (Кодировка WINDOWS) – отличается от ASCII размещением и набором символов верхней части таблицы. (Цель появления – создать неудобства и заставить приобретать новое программное обеспечение(?), т.к. даже тексты Windows не читаются в DOS).

 

Начиная с Windows-95 применяется кодировка Unicode, использующая 2 байта для хранения символа (1 байт – номер символа, 2 – номер национальной или символьной страницы), что обеспечивает поддержку практически любого языка ( 65536 символов от 0 до 65535).

 

Иногда в байте хранят натуральные (0…255) или целые числа (-128…127). При этом само число хранится в 7 младших (правых) разрядах, а в старшем разряде хранится признак знака.

 

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

210 байт = 1024 байта = 1 Кбайт (килобайт)

210 Кбайт = 1024 Кбайта = 1 Мбайт (мегабайт)

210 Мбайт = 1024 Мбайта = 1 Гбайт (гигабайт) и т.д.

Урок №5 Логические основы ЭВМ

Логические операции и таблицы истинности

A

 F

 1

 1

1

 1

 0

 0

 1

 0

 0

F = A & B=AB=A^B

Логическое умножение  КОНЪЮНКЦИЯ  - это новое  сложное выражение будет истинным только тогда, когда истинны оба исходных простых выражения. Конъюнкция определяет соединение двух логических выражений с помощью союза И.

У словно-графическое обозначение элемента на логической схеме:

A

 F

 1

 1

1

 1

 0

1

 0

 1

 0

 0

F = A + B 

Логическое сложение – ДИЗЪЮНКЦИЯ - это новое сложное выражение будет истинным тогда и только тогда, когда  истинно хотя бы одно из исходных (простых) выражений. Дизъюнкция определяет соединение двух логических выражений с помощью союза ИЛИ.

У словно-графическое обозначение элемента на логической схеме:

 

A

неА

 1

 1

 1

 0

Логическое отрицание : ИНВЕРСИЯ - если исходное выражение истинно, то результат отрицания будет ложным, и наоборот, если исходное выражение ложно, то результат отрицания будет истинным. Данная операция означает, что к исходному логическому выражению добавляется частица НЕ

У словно-графическое обозначение элемента на логической схеме: