Двоичная, восьмеричная и шестнадцатеричная системы счисления. Правила переводов десятичных чисел в них и обратно

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 02.02.2014
Размер файла 227,1 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Тема: “Двоичная, восьмеричная и шестнадцатеричная системы счисления. Правила переводов десятичных чисел в них и обратно”.

Cодержание

1. Аналитическая часть

1.1 Двоичная система счисления

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

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

1.4 Правила переводов десятичных чисел в них и обратно

1.5 Форматы хранения чисел с плавающей точкой

2. Практическая разработка

2.1 Блок-схема алгоритма

2.2 Распределение памяти и листинг программа

2.3 Результаты тестирования программы

3. Описание средств вычислительной техники

Список литературы

1. Аналитическая часть

1.1 Двоичная система счисления

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

· электромагнитные реле (замкнуто/разомкнуто), широко использовались в конструкциях первых ЭВМ;

· участок поверхности магнитного носителя информации (намагничен/размагничен);

· участок поверхности лазерного диска (отражает/не отражает);

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

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

Вид информации

Двоичный код

Числовая

Текстовая

Графическая

Звуковая

Видео

Информация в компьютере представлена в двоичном коде, алфавит которого состоит из двух цифр (0 и 1).

Цифры двоичного кода можно рассматривать как два равновероятных состояния (события).

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

Даже сама единица измерения количества информации бит (bit) получила свое название от английского словосочетания Binary digit (двоичная цифра). Важно, что каждая цифра машинного двоичного кода несет информацию в 1 бит. Таким образом, две цифры несут информацию в 2 бита, три цифры -- в 3 бита и так далее. Количество информации в битах равно количеству цифр двоичного машинного кода.

Каждая цифра машинного двоичного кода несет количество информации, равное одному биту.

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

-- позиционная целочисленная система счисления с основанием 8. Для представления чисел в ней используются цифры 0 до 7.

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

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

(шестнадцатеричные числа) -- позиционная система счисления по целочисленному основанию 16. Обычно в качестве шестнадцатеричных цифр используются десятичные цифры от 0 до 9 и латинские буквы от A до F для обозначения цифр от 1010 до 1510, то есть (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F).

1.4 Правила переводов десятичных чисел в них и обратно

· Преобразование двоичных чисел в десятичные.

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

512

256

128

64

32

16

8

4

2

1

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

Пример:

Допустим, вам дано двоичное число 110001. Для перевода в десятичное просто запишите его справа налево как сумму по разрядам следующим образом:

Можно записать это в виде таблицы следующим образом:

512

256

128

64

32

16

8

4

2

1

1

1

0

0

0

1

+32

+16

+1

Точно так же, начиная с двоичной точки, двигайтесь справа налево. Под каждой двоичной единицей напишите её эквивалент в строчке ниже. Сложите получившиеся десятичные числа.
Таким образом, двоичное число 110001 равнозначно десятичному 49.

Преобразование методом Горнера

Для того, чтобы преобразовывать числа из двоичной в десятичную систему данным методом, надо суммировать цифры слева направо, умножая ранее полученный результат на основу системы (в данном случае 2). Например, двоичное число 1011011 переводится в десятичную систему так: 0*2+1=1 >> 1*2+0=2 >> 2*2+1=5 >> 5*2+1=11 >> 11*2+0=22 >> 22*2+1=45 >> 45*2+1=91 То есть в десятичной системе это число будет записано как 91. Или число 101111 переводится в десятичную систему так: 0*2+1=1 >> 1*2+0=2 >> 2*2+1=5 >> 5*2+1=11 >> 11*2+1=23 >> 23*2+1=47 То есть в десятичной системе это число будет записано как 47.

Преобразование десятичных чисел в двоичные

Допустим, нам нужно перевести число 19 в двоичное. Вы можете воспользоваться следующей процедурой :

19 /2 = 9 с остатком 1

9 /2 = 4 c остатком 1

4 /2 = 2 с остатком 0

2 /2 = 1 с остатком 0

1 /2 = 0 с остатком 1

Итак, мы делим каждое частное на 2 и записываем остаток в конец двоичной записи. Продолжаем деление до тех пор, пока в делимом не будет 0. В результате получаем число 19 в двоичной записи: 10011.

Преобразование дробных двоичных чисел в десятичные

Нужно перевести число 1011010.101 в десятичную систему. Запишем это число следующим образом:

Преобразование дробных десятичных чисел в двоичные

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

· Вначале переводится целая часть десятичной дроби в двоичную систему счисления;

· Затем дробная часть десятичной дроби умножается на основание двоичной системы счисления;

· В полученном произведении выделяется целая часть, которая принимается в качестве значения первого после запятой разряда числа в двоичной системе счисления;

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

Пример: Требуется перевести дробное десятичное число 206,116 в дробное двоичное число.

Перевод целой части дает 20610=110011102 по ранее описанным алгоритмам; дробную часть умножаем на основание 2, занося целые части произведения в разряды после запятой искомого дробного двоичного числа:

116 * 2 = 0.232

232 * 2 = 0.464

464 * 2 = 0.928

928 * 2 = 1.856

856 * 2 = 1.712

712 * 2 = 1.424

424 * 2 = 0.848

848 * 2 = 1.696

696 * 2 = 1.392

392 * 2 = 0.784

и т. д.

Получим: 206,11610=11001110,00011101102

· Преобразование восьмеричных чисел в десятичные.

Алгоритм перевода чисел из восьмеричной в десятичную систему счисления аналогичен уже рассматривавшему мною в разделе: Преобразование двоичных чисел в десятичные.

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

Пример: 25418 = 010 101 100 001 = 0101011000012

Существует таблица перевода восьмеричных чисел в двоичные

08

=

0002

18

=

0012

28

=

0102

38

=

0112

48

=

1002

58

=

1012

68

=

1102

78

=

1112

· Преобразование шестнадцатеричных чисел в десятичные.

Для перевода шестнадцатеричного числа в десятичное необходимо это число представить в виде суммы произведений степеней основания шестнадцатеричной системы счисления на соответствующие цифры в разрядах шестнадцатеричного числа.

Например, требуется перевести шестнадцатеричное число 5A3 в десятичное. В этом числе 3 цифры. В соответствии с вышеуказанным правилом представим его в виде суммы степеней с основанием 16:

5A316 = 3·160+10·161+5·16І= 3·1+10·16+5·256= 3+160+1280= 144310

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

Например:

0101101000112 = 0101 1010 0011 = 5A316

Таблица перевода чисел

016=010=08

0

0

0

0

116=110=18

0

0

0

1

216=210=28

0

0

1

0

316=310=38

0

0

1

1

416=410=48

0

1

0

0

516=510=58

0

1

0

1

616=610=68

0

1

1

0

716=710=78

0

1

1

1

816=810=108

1

0

0

0

916=910=118

1

0

0

1

A16=1010=128

1

0

1

0

B16=1110=138

1

0

1

1

C16=1210=148

1

1

0

0

D16=1310=158

1

1

0

1

E16=1410=168

1

1

1

0

F16=1510=178

1

1

1

1

1.5 Форматы хранения чисел с плавающей точкой

Типы значений с плавающей точкой Real, Single, Double, Extended и Comp (вещественный, с одинарной точностью, с двойной точностью, с повышенной точностью и сложный) хранятся в виде двоичного представления знака (+ или -), показателя степени и значащей части числа. Представляемое число имеет значение: +/- значащая_часть Х 2^показатель_степени где значащая часть числа представляет собой отдельный бит слева от двоичной десятичной точки (то есть 0 <= значащая часть <= 2). система счисления плавающая точка

Пример: Вещественный тип

Шестибайтовое (48-битовое) вещественное число (Real) подразделяется на три поля:

1 39 8

+---+------..-------+--------+

| s | f | e |

+---+------..-------+--------+

msb lsb msb lsb

Значение v числа определяется с помощью выражений:

if 0 < e <= 255, then v = (-1)^s * 2^(e-129)*(l.f).

if e = 0, then v = 0.

В схеме слева расположены старшие значащие биты, а справа - младшие значащие биты. Самое левое значение хранится в самых старших адресах. Например, для значения вещественного типа e сохраняется в первом байте, f - в следующих пяти байтах, а s - в старшем значащем бите последнего байта.

2. Практическая разработка

Описание алгоритма решения задач.

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

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

Распределение памяти:

L - счетчик цикла

DB,C - содержат текущий байт первого числа

D,E - содержат текущий байт второго числа

H - содержат значение текущего байта второго числа

A - содержат значение текущего байта первого числа

H,L - временное хранение значения адреса старшего байта второго числа, с последующим перемещением в пару D,E.

2.1 Блок схема

2.2 Распределение памяти и листинг программы

Распределение памяти:

L - счетчик цикла

B,C - содержат текущий байт первого числа

D,E - содержат текущий байт второго числа

H - содержит значение текущего второго числа

A - содержит значение текущего байта первого числа

H,L - временное хранение значения адреса старшего байта второго числа, с последующим перемещением в пару D,E

400016-адрес начала массива исходных чисел

Адрес16

Шестнадцатеричный код

Код ассемблера

комментарии

4000

31 00 80

LXI SP,8000 h

Создание стека

4003

01 03 50

LXI B,5003 h

Загрузить в пару B,C значение адреса старшего байта второго числа

4006

21 07 50

LXI H,5007 h

Загрузить H,L значение адреса старшего байта второго числа

4009

EB

XCHG

Сохранение значения адреса старшего байта второго числа в D,E

400A

1A

LDAX D

Загрузка в A значения старшего байта второго числа

400B

E6 7F

ANI 7Fh

Обнуление старшего бита, отвечающего за знак числа

400D

67

MOV H,A

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

400E

0A

LDAX B

Загрузка в A значения старшего байта первого числа

400F

E6 7F

ANI 7Fh

Обнуление старшего бита, отвечающего за знак числа

4011

2E 04

MVI L, 04h

Загрузка счетчика цикла значением 4

4013

BC

CMP H

Сравнить байты чисел (содержимое A с содержимым регистра H)

4014

DA 2F 40

JC 402Fh

Если второе число больше создать в регистре B значение 02h

4017

C2 3B 40

JNZ 403Bh

Если второе число больше создать в регистре B значение 01h

401A

0B

DCX B

Получить в паре B,C значение адреса следующего байта первого числа

401B

1B

DCX D

Получить в паре D,E значение адреса следующего байта второго числа

401C

1A

LDAX D

Загрузить в A значение следующего байта второго числа

401D

67

MOV H,A

Сохранение значения в регистре H

401E

0A

LDAX B

Загрузить в A значение следующего байта первого числа

401F

2D

DCR L

Уменьшить значение счетчика на единицу

4020

C2 13 40

JNZ 4013h

Пока значение счетчика не ноль выполнять цикл

4023

3E 00

MVI A,00h

Числа равны записать в A значение 00h

4025

32 00 70

STA 7000h

Отправляем содержимое аккумулятора в ячейку 7000

4028

21 7C 30

LXI H,307Ch

Загрузка в H,L адреса, начиная с которого располагается текст : «NUMBERS ARE EQUAL».

402B

E5

PUSH H

Запись содержимого регистров H,L в стек

402C

C3 44 40

JMP 4044h

Безусловный переход к адресу 4044h, выводу на экран результатов

402F

3E 02

MVI A,02h

Записываем 02h в A

4031

32 00 70

STA 7000h

Отправляем содержимое аккумулятора в ячейку 7000h

4034

21 5D 30

LXI H,305Dh

Загрузка в H,L адреса, начиная с которого располагается текст: «THE SECOND MORE THAN THE FIRST».

4037

E5

PUSH H

Запись содержимого регистров H,L в стек

4038

C3 44 40

JMP 4044h

Безусловный переход к адресу 4044h, выводу на экран результатов

403B

3E 01

MVI A,01h

Записываем 01h в A

403D

32 00 70

STA 7000h

Отправляем содержимое аккумулятора в ячейку 7000h

4040

21 3E 30

LXI H, 303Eh

Загрузка в H,L адреса, начиная с которого располагается текст: «THE FIRST MORE THAN THE SECOND».

4043

E5

PUSH H

Запись содержимого регистров в H,L в стек

4044

01 20 30

LXI B, 3020h

Загрузка в B,C адреса, начиная с которого располагается текст: «INITIAL DATA».

4047

CD 4C 00

CALL 4Ch

Вывод текста на экран.

404A

CD 49 00

CALL 49h

Переход на новую строку.

404D

21 03 50

LXI H, 5003h

Загрузить в пару H,L значение адреса старшего байта первого числа

4050

CD 00 41

CALL 4100h

Переход к подпрограмме вывода числа на экран

4053

21 07 50

LXI H, 5007h

Загрузить в пару H,L значение адреса старшего байта второго числа

4056

СD 00 41

CALL 4100h

Переход к подпрограмме вывода числа на экран

4059

С1

POP B

Извлечение из стека значений в регистры B,C

405A

CD 4C 00

CALL 4Ch

Вывод текста на экран

405D

CD 49 00

CALL 49h

Переход на новую строку.

4060

01 8E 30

LXI B,308Eh

Загрузка в B,С адреса начиная с которого располагается текст: CHANGE NUMBERS? (Y/N)

4063

CD 4C 00

CALL 4Ch

Вывод текста на экран

4066

CD 55 00

CALL 55h

Ввод кода символа в A с эхом на консоль

4069

D6 4E

SUI 4Eh

Вычитание 4Eh (Код клавиши N) из аккумулятора

406B

CD 49 00

CALL 49h

Переход на новую строку

406E

CA 90 40

JZ 4090h

Переход по условию Z=1, т.е нажата клавиша N

4071

01 A6 30

LXI B,30A6h

Загрузка в B,C адреса начиная с которого располагается текст: ENTER NUMBERS :.

4074

CD 4C 00

CALL 4Ch

Вывод текста на экран

4077

16 08

MVI D,08h

Создание счетчика D

4079

21 00 50

LXI H, 5000h

Загрузка в H,L адреса начиная с которого располагаются исходные числа.

407C

CD 67 00

CALL 67h

Ввод двух шестнадцатеричных цифр в A

407F

77

MOV A, M

Пересылка содержимого M в A

4080

23

INX H

Положительное приращение H,L

4081

15

DCR D

Отрицательное приращение регистра D

4082

3E 20

MVI A, 20h

Пересылка 20h (код клавиши пробел) в регистр A

4084

CD 58 00

CALL 58h

Вывод пробела на экран

4087

C2 7C 40

JNZ 407Ch

Переход по условию: Z=0, т.е не все константы введены

408A

CD 49 00

CALL 49h

Переход на новую строку

408D

C3 00 40

JMP 4000h

Безусловный переход кначалу программы

4090

CD 40 00

CALL 40h

Вход в режим ожидания ввода команды монитора.

Подпрограмма вывода числа на экран.

4100

1E 04

MVI E,20h

Создание счетчика в E

4102

7E

MOV A,M

Пересылка содержимого M в А.

4103

CD 61 00

CALL 61h

Вывод на кран бита числа.

4106

2D

DCR L

Отрицательное приращение регистра L , получение адресов следующего бита числа.

4107

3E 20

MVI A,20h

Пересылка 20h в регистр A

4109

CD 58 00

CALL 58h

Вывод пробела на экран

410С

1D

DCR E

Отрицательное приращение регистра E

410D

C2 02 41

JNZ 4102h

Переход по условию Z=0 то есть не все константы введены

4110

CD 49 00

CALL 49h

Переход на новую строку

4113

C9

RET

Выход из подпрограммы

2.3 Результаты тестирования программы

Для тестирования возьмем два массива констант из задания.

Исходный массив:

Адрес16

Константа16

Адрес16

Константа16

5000

22

5004

22

5001

С1

5005

70

5002

74

5006

74

5003

DB

5007

DB

В результате работы программы в ячейку с адресом 7000h был записан код 01h то есть левое число больше чем правое. Для того что бы убедится в том что программа выдала верный результат, будем действовать согласно описанию алгоритма. Обнулим старшие биты старших байтов и будем сравнивать байты чисел между собой, начиная со старших. Первые два старших байта равны между собой. Третий старший байт левого числа больше правого, следовательно, левое число больше.

Потом меняю числа местами:

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

Характеристики оборудования.

Персональный компьютер на базе ACPI x64-based PC

1. Процессор: QuadCore AMD Athlon X4 620, 2600 MHz (13 x 200)

2. Оперативная память: 3072 Мб (DDR3-1333 DDR3 SDRAM)

3. Видео карта: NVIDIA GeForce GT 240 (1024 Мб)

4. Жесткий диск : WDC WD1001FALS-00E3A0 ATA Device (931 Гб, IDE)

Стандартное программное обеспечение:

Microsoft Windows 7 Ultimate(Максимальная)

Microsoft Office 2010.

Список используемой литературы

1) МикроЭВМ СМ-1800. Архитектура, программирование, применение / А.В. Гиглавный, Н.Д. Кобанов, Н.Л. Прохоров, А.Н. Шкамарда. - М.: Финансы и статистика, 1984.

2) Гиляров, В.Н. МикроЭВМ СМ-1800 и ее эмулятор на ПК: Методические указания к лабораторной работе / В.Н. Гиляров. - СПб.: СПбГТИ(ТУ), 2006.

3) Гиляров В.Н. Видеотерминал и клавиатура микроЭВМ: Методические указания к лабораторной работе / В.Н. Гиляров. - СПб.: СПбГТИ(ТУ), 2006.

Размещено на Allbest.ru


Подобные документы

  • Анализ двоичной, восьмеричной и шестнадцатеричной систем счисления и перевода десятичных чисел. Форматы хранения чисел с плавающей точкой. Программа для преобразования массива констант в формат числа с плавающей точкой на эмуляторе микро-ЭВМ СМ-1800.

    курсовая работа [266,9 K], добавлен 24.12.2013

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

    курсовая работа [920,9 K], добавлен 13.07.2014

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

    курсовая работа [343,1 K], добавлен 11.11.2014

  • Двоичный код, особенности кодирования и декодирования информации. Система счисления как совокупность правил записи чисел с помощью определенного набора символов. Классификация систем счисления, специфика перевода чисел в позиционной системе счисления.

    презентация [16,3 K], добавлен 07.06.2011

  • Характеристика методов представления заданных чисел в двоичной, шестнадцатеричной, восьмеричной системе счисления. Представление указанного числа в четырехбайтовом IEEE формате. Разработка алгоритма обработки одномерных и двумерных числовых массивов.

    контрольная работа [138,9 K], добавлен 05.06.2010

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

    конспект произведения [971,1 K], добавлен 31.05.2009

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

    контрольная работа [37,3 K], добавлен 13.02.2009

  • Понятие шестнадцатеричной системы счисления как позиционной с основанием "16", история ее внедрения. Символы и синтаксис использования, виды и правила перевода. Применение шестнадцатеричной системы счисления в цифровой электронике и компьютерной технике.

    презентация [1,6 M], добавлен 05.05.2012

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

    презентация [516,8 K], добавлен 23.10.2015

  • Основные форматы данных и их представление. Запись чисел в формат с плавающей точкой. Вычитание чисел в формате с плавающей точкой. Регистры операндов и результата, размером формата числа с плавающей точкой, двойной точности. Поля смещённого порядка.

    курсовая работа [78,9 K], добавлен 09.09.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.