Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛабораторныйПрактикум1.pdf
Скачиваний:
397
Добавлен:
02.02.2015
Размер:
4.76 Mб
Скачать

ЛАБОРАТОРНАЯ РАБОТА 2. СИСТЕМЫ СЧИСЛЕНИЯ

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

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

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

2.1. ГЕНЕРАЦИЯ ЧИСЕЛ ДЛЯ КОНВЕРТИРОВАНИЯ

Запишите в лабораторный журнал три числа для перевода в различные системы счисления.

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

2.2.АЛГОРИТМЫ ПЕРЕВОДА ЦЕЛОГО ЧИСЛА ИЗ ДЕСЯТИЧНОЙ СИСТЕМЫ СЧИСЛЕНИЯ В ПРОИЗВОЛЬНУЮ P-РИЧНУЮ И ОБРАТНО

Вобщем виде запись числа …cba.mnp в позиционной системе счисления означает [2]:

…+ c·p2 + b·p1 + a·p0 + m·p–1 + n·p–2 + …

(2.1)

Для преобразования целого числа из десятичной системы счисления в p-ричную систему можно использовать алгоритм деления (D10 – исходное число в десятичной системе счисления, p10 – основание системы назначения в десятичной системе счисления):

10

1)ввести число D10;

2)если D10 не равно нулю, разделить D10 на p10, записать целую часть частного M10 и остаток N10, иначе – завершить преобразование;

3)записать N10 с помощью соответствующей цифры p-ричной системы счисления в младший незаполненный разряд;

4)заменить D10 на M10 и вернуться к шагу 2

Алгоритм обратного перевода целого числа из p-ричной системы в десятичную методом умножения работает по формуле (2.1) общего вида, приведенной выше:

1)Задать счетчик разрядов k = 0;

2)Задать переменную хранения промежуточного результата M = 0;

3)Умножить k-й справа разряд (нумерация идёт от нуля) p-ричного числа на pk;

4)Результат добавить к M;

5)Увеличить k на единицу и перейти к шагу 3;

6)повторять шаги 3–5, пока не переберём все разряды p-ричного числа.

Для перевода в другую систему дробного числа целая часть преобразуется по алгоритмам, представленным выше, дробную часть в виде правильной дроби (у которой целая часть равна нулю, т.е. присутствует только дробная часть) обозначим D10. Скорее всего, абсолютно точный перевод не получится, примем, что необходимо преобразование с точностью k знаков, т.е. с относительной точностью 1/(2pk). Алгоритм перевода:

1)Умножить D10 на p;

2)Целую часть произведения представить соответствующей цифрой p-ричного представления;

3)Умножать D10 (дробную часть) на p до тех пор, пока не будет достигнута требуемая точность (получится p-ричное число с k дробными разрядами).

11

2.3. ДВОИЧНАЯ ЗАПИСЬ

Наименьшей единицей информации является Бит. Бит выражается одним двоичным разрядом. Биты по 8 группируются в байты, операции выполняются с байтами. Один байт может кодировать небольшое по абсолютной величине число или символ. Один килобайт содержит 1024 байт, в данном случае приставка кило означает 210. Один мегабайт содержит 1024 килобайта, гигабайт содержит 1024 мегабайта, а тера– байт – 1024 гигабайта.

Четвёрка битов называется полубайтом, запись полубайтами двоичного числа легче читается. Один полубайт соответствует одной цифре шестнадцатеричного представления.

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

Т.к. восьмеричная и шестнадцатеричная системы имеют основание, являющееся степенью двойки, перевод между этими системами наиболее прост. Наибольшую цифру восьмеричного разряда (78) можно представить двоичной триадой 1112, наибольшую цифру шестнадцатеричного (F16) – двоичной тетрадой 11112. Для преобразования восьмеричного числа в двоичную систему, каждое число заменяется двоичной триадой, шестнадцатеричного – тетрадой.

Таблица 2.1. Числа в системах счисления по основаниям 10, 2, 8 и 16

Десятичная

Двоичная

 

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

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

0

0000

 

00

0

1

0001

 

01

1

2

0010

 

02

2

3

0011

 

03

3

4

0100

 

04

4

5

0101

 

05

5

6

0110

 

06

6

7

0111

 

07

7

8

1000

 

10

8

9

1001

 

11

9

10

1010

 

12

A

 

 

12

 

11

1011

13

B

12

1100

14

C

13

1101

15

D

14

1110

16

E

15

1111

17

F

Таблица 2.2. Позиционные значения двоичных разрядов

Разряд

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

Значение

32768

16384

8192

4096

2048

1024

512

256

128

64

32

16

8

4

2

1

Обратите внимание, из таблицы 2.2 видно, что максимальное значение байта 255, для описания большего числа необходимо использовать памяти более, чем один байт.

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

Рассмотрим пример сложения двоичных чисел:

3510 + 2610 = 1000112 + 110102 = 1111012 = 6110

100011011010

111101

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

2.4. ЛОГИЧЕСКИЕ ОПЕРАЦИИ НАД ДВОИЧНЫМИ ЧИСЛАМИ

Унарная операция (работает для одного операнда) отрицания NOT (НЕТ, ¬) преобразует нуль в единицу, а единицу в нуль. Выполните операцию для первого числа в двоичном формате.

Бинарная операция (работает с двумя операндами) дизъюнкции (логическое сложение, логическое ИЛИ, включающее ИЛИ) – OR (ИЛИ, |, ) работает по принципу «или то, или это, или оба сразу». Даёт нулевой результат только при обоих нулевых операндах.

13

Бинарная операция конъюнкция (логическое умножение, логическое И) – AND (И, &, ) работает по принципу «только оба сразу». Даёт ненулевой результат, если оба операнда ненулевые.

Бинарная операция сложение по модулю 2 (исключающее ИЛИ, сумма по модулю 2) XOR работает по принципу «либо…либо…», возвращает нуль при равных операндах, или по-другому возвращает единицу при неравных операндах.

Бинарная логическая связка импликация IMP ( ), работает по принципу «если…то», первый операнд определяется как посылка, второй как следствие. Суждение, выражаемое импликацией, выражается: посылка является условием для выполнения следствия, следствие является условием, необходимым для истинности посылки. Проще запомнить как «равны, или по росту» (первый не больше второго).

Таблица 2.3. Таблица истинности логических операций

 

 

 

 

AND

 

 

 

 

OR

 

 

 

XOR

 

 

 

IMP

 

 

 

a

 

0

0

1

1

 

0

0

 

1

1

 

0

0

1

1

 

0

0

1

1

 

 

b

 

0

1

0

1

 

0

1

 

0

1

 

0

1

0

1

 

0

1

0

1

 

 

=

 

0

0

0

1

 

0

1

 

1

1

 

0

1

1

0

 

1

1

0

1

 

 

 

 

 

 

 

 

Создайте 16-ти битное число, в котором старшие (левые) 12 бит заполнены единицами, а остальные младшие – нулями. Подобное число может служить маской, с помощью которой из числа такого же размера выделяется часть. Эту возможность будем использовать в лабораторной работе Сети.

Между полученным числом (маской) и двоичной формой первого целого числа, дополненной незначащими нулями слева до двух байт (16 бит) проведите операцию конъюнкции (AND), вы получите маскированное число (в лабораторной работе Сети эта часть числа соответствует адресу подсети). Выполните операцию XOR между первым целым числом в двоичной форме и результатом предыдущей операции. Полученное число содержит ненулевые биты в области нулевых битов маски. Аналогично его можно было бы получить, выполнив операцию отрицания с маской, с последующей операцией AND с первым числом.

14