Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие Эконом информатика 26.06. 2014 Microsof...doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
10.76 Mб
Скачать

1.2. Двоичная, восьмеричная и шестнадцатеричная системы счислений

Наименьшее из чисел, которое можно взять за основание системы счисления, - это число 2, соответствующая система счисления называется двоичной. Эта система счисления одна из самых старых, она встречалась у некоторых племен Австралии и Полинезии. Для записи числа в двоичной системе счисления используется два символа {0,1}. Например, число 101001,012 = 1*25 + 0*24 + 1*23 +0*22 +0*21 +1*20 +0*2-1 + 1*2-2 = 41,2510. Для записи этого числа в десятичной системе счисления понадобилось 4 цифры, а в двоичной – 8 цифр. Это недостаток двоичной системы счисления по сравнению с десятичной. Однако, с точки зрения технической реализации, для десятичной цифры необходимо десять устойчивых состояний или, другими словами, переключатель с десятью положениями, тогда как для двоичной цифры (бит – Binery Digit) достаточно два устойчивых состояния: 0 - нет сигнала (выключено), 1 - есть сигнал (включено) или 0 – нет «дырочки» на перфоленте (перфокарте), 1 - есть «дырочка» и т.д. . Последнее обстоятельство оказалось весьма полезным при создании современных вычислительных машин. Числа в ЭВМ представляются в двоичной системе счисления. В двоичной системе счисления все арифметические действия выполняются весьма просто, например таблица сложения и умножения будет иметь восемь правил.

Таблица 1. 1

Арифметические действия в двоичной системе счисления

сложение

умножение

0 + 0 = 0

0 * 0 = 0

0 + 1 = 1

0 * 1 = 0

1 + 0 = 1

1 * 0 = 0

1 +1 = 10

1 * 1 = 1

Рассмотрим операции сложения и вычитания в двоичной системе счисления. В двоичной системе счисления нет цифры два, поэтому 1+1 = 102, или ноль пишем один в уме.

Пример 1.7. Вычислить 10111012 + 1010112. Сложение произведем столбиком

1011101

+

101011

--------------

10001000

Т.е. 1+1 = 10 или ноль пишем один в уме; один и один в уме – это 10, т.е. опять ноль пишем и один в уме и т.д.

Пример 1.8. Вычислить 100010002 – 1010112. Вычитание также произведем столбиком

10001000

-

101011

--------------

1011101

Здесь при вычитании необходимо занять единицу предыдущего разряда.

Вместе с двоичной системой счисления часто используются «кратные» ей восьмеричная и шестнадцатеричная системы счислений. Т.к. 8 = 23 , то для записи восьми цифр {0,1,...,7} в двоичной системе счисления достаточно трех разрядов, в каждом из которых записывается двоичная цифра. При этом наибольшее из них – 7, записывается в трех разрядах следующим образом

1

1

1


1

1

1

1

Аналогично, для записи шестнадцати цифр {0, 1, ..., 9, A, B, C, D, E, F} в двоичной системе счисления достаточно четырех разрядов (16 = 24), в каждом из которых записывается двоичная цифра. Наибольшее из них – 15, записывается в четырех разрядах следующим образом

Используя таблицу 2, длинное, с точки зрения количества символов, число из двоичной системы счисления легко перевести в восьмеричную систему счисления и наоборот. Например, дано число 1010111,01112. Для его перевода восьмеричную систему счисления необходимо двигаясь вправо и влево от десятичной точки (запятой) выделять группы по три цифры, добавив при необходимости незначащие нули в начале и в конце числа, а именно 001 010 111, 011 1002. Тогда в соответствии с таблицей 2 (001 010 111, 011 100)2 = 127,348. Для перевода числа в двоичную систему счисления необходимо опять воспользоваться таблицей 2, т.е. 127,348 = 001 010 111, 011 1002. После отбрасывания незначащих нулей получаем 127,348 = 1010111,01112.

Для перевода этого же числа 1010111,01112 в шестнадцатеричную систему счисления необходимо двигаясь вправо и влево от десятичной точки (запятой) выделять группы по четыре цифры, добавив при необходимости незначащие нули в начале и в конце числа и воспользоваться таблицей 2, а именно 0101 0111, 01112 = 57,716. Также с помощью таблицы можно перейти в двоичную систему счисления, а, именно, 57,716 = 0101 0111,01112. Использование восьмеричной и, особенно, шестнадцатеричной системы счисления позволяет уменьшить число символов, необходимых для записи числа.

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

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

Таблица 1.2.

Таблица двоичных кодов восьмеричных, десятичных и шестнадцатеричных цифр

Цифра

Двоичный код в восьмеричной системе счисления

Цифра

Двоичный код в шестнадцатеричной системе счисления

0

000

0

0000

1

001

1

0001

2

010

2

0010

3

011

3

0011

4

100

4

0100

5

101

5

0101

6

110

6

0110

7

111

7

0111

-

-

8

1000

-

-

9

1001

-

-

A

1010

-

-

B

1011

-

-

C

1100

-

-

D

1101

-

-

E

1110

-

-

F

1111

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

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

Наибольшее значение числа, записанное в одном байте равно 255. Действительно 1111 11112 = 1*27+1*26+1*25+1*24+1*23+1*22+1*21+1*20 = 25510. Сейчас и в дальнейшем при вычислениях подобных выражений можно поступить проще, т.е.

1111 11112 = 1111 11112 + 1 - 1 = 1 0000 00002 -1 = 1*28 - 1 = 255.

Таблица 1.3

Представление целых положительных чисел в двоичной

системе счисления в восьми разрядах

Число

Двоичный код

0

0000 0000

1

0000 0001

2

0000 0010

3

0000 0011

255

1111 1111

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

Знак числа кодируется двоичной цифрой, при этом код 0 означает знак плюс, код 1 – знак минус. Для знака числа отводится старший (левый) бит в записи числа (биты нумеруются справа налево, начиная с 0 – го разряда). Тогда, например число 0000 0000 0000 01112 = 710, а число 1000 0000 0000 01112 = -710. В компьютерах для представления положительных и отрицательных чисел используются специальные коды: прямой, обратный и дополнительный. Причем два последних позволяют заменить неудобную для ЭВМ операцию вычитания на операцию сложения с отрицательным числом; дополнительный код обеспечивает более быстрое выполнение операций, поэтому в ЭВМ чаще применяется именно он. Обратный код числа получается заменой единиц нулями, а нулей единицами. Знаковый бит остается неизменным. К обратному коду прибавляется единица и получается дополнительный код. Тогда для числа (-7) обратный и дополнительный коды следующие: 1111 1111 1111 1000 – это обратный код; 1111 1111 1111 1001 – это дополнительный код.

Тогда операция вычитания 7-7 в двоичной системе счисления с использованием дополнительного кода приводит к следующей операции сложения

0000 0000 0000 01112

+

1111 1111 1111 10012

-----------------------------

1 0000 0000 0000 00002

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

Наибольшее положительное число, которое может быть записано в слове (2 байта) 0111 1111 1111 11112 = 0111 1111 1111 11112 + 1 - 1=1000 0000 0000 0000 = 216 –1 = 32767, а в двойном слове (4 байта) 0111 1111 1111 1111 1111 1111 1111 11112 = 231 – 1 = 2 147 483 647. Наименьшее отрицательное число в слове 1111 1111 1111 11112, но оно записывается в виде обратного кода, а именно 1000 0000 0000 00002 = 215 = - 32768, в двойном слове 1111 1111 1111 1111 1111 1111 1111 11112 = 23 1= - 2 147 483 648.

Для кодирования действительных чисел наиболее приемлемой является форма их записи, называемая нормальной формой или формой с плавающей (запятой) точкой: N = MP r , где M – мантисса числа (r- порядок числа (целое число); P - основание системы счисления. Например, N = - 3,2510, если это число перевести в двоичную систему счисления оно будет иметь вид N = -11,012 или в нормализованном виде N = - 0,1101*22. Таким образом, мантисса M = 0,1101; основание системы счисления P = 2; порядок числа r =2. Числа с плавающей точкой имеют формат двойного слова (4 байта) или расширенного слова (8 байт). В формате двойного слова указанное число будет записано следующим образом

Знак

числа

Порядок

Мантисса

N разряда

31

30

29

25

24

23

22

21

20

19

18

1

0

Число

1

0

0

0

1

0

1

1

0

1

0

0

0

0

Для символьных данных также применяется двоичное кодирование путем задания кодовых таблиц. Наиболее распространенная таблица – это ACSII (American National Standard for Information Interchange, американский стандартный код информационного обмена). Коды от 0 до 127 составляют базовую (основную) таблицу, коды со 128 по 255 – расширенную (дополнительную) таблицу. Дополнительная таблица отдана национальным алфавитам и символам псевдографики. Например, латинское «А» кодируется числом 6510 = 4116 = 0100 00012, занимая один байт памяти со следующим содержимым

0

0

1

0

0

0

0

1



Далее «В» – 6610 = 4216 и т.д., малое латинское «а» – 9710 = 6116. Русское «А» – 12810 = 8016. В большинстве современных языков программирования есть операторы, позволяющие определить символ по его числовому значению и наоборот.

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

Задания для самостоятельной работы.

  1. Перевести в десятичную систему счисления следующие числа: 1234,078; 243,045; 1202,013; 1256,026.

  2. Найти значения чисел в соответствующих системах счисления: 56,25=Y8; 145,125=Z12; 245,14=X7 и проверить полученные результаты обратным переводом в десятичную систему счисления.

  3. Перевести в двоичную, восьмеричную и шестнадцатеричную системы счислений следующие числа: 214,125; 106,3125; 147,14.

  4. Сложить числа, результат проверить вычитанием 1010110,011012+1011,12; 111011,012+11101,00112.

  5. Найти произведение чисел 241,28*15,24=X16.

  6. Школьный учитель на вопрос, сколько у него учеников ответил: «У меня в классе 100 детей, из них 24 мальчика и 32 девочки». В какой системе счисления учитель сформулировал задачу?

  7. Заполнить несколько клеток таблицы умножения чисел в шестеричной системе счисления, например 46*56=X6; 26*46=Y6; 36*56=Z6; 66*66=W6. (Примечание, например 610*710=4210=4*10+2, поэтому 46*56=4*5=20=3*6+2=326).

  8. Записать обратный и дополнительный коды для отрицательного числа -10.

Задания для домашней контрольной работы.

  1. Перевести в десятичную систему счисления следующие числа: 66[(N+1)/4],[(N+2)/4]7; 12[(N+3)/5],[(N+4)/6]28; AD[(N+5)/3],C116.

Примечание: здесь N номер студента по списку, а число в квадратных скобках означает целую часть соответствующего числа, например N=10, тогда [(N+1)/4]=[11/4]=[2,75]=2.

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

  2. Перевести из десятичной в двоичную, восьмеричную и шестнадцатеричную системы счислений, следующие числа: [(N+3)/3]51,[(30-N)/3]; 25[(20-N)/2],[N/4].

  3. Сложить числа, результат проверить вычитанием 1А10А10,0В012+10В11,А12; 111АВА,012+1110В,АА112. Здесь вместо символа А ставится единица, если номер N по списку четное число и ноль, если нечетное число. Вместо символа В ставится ноль, если номер N по списку четное число и единица, если нечетное число.

  4. Найти произведение чисел 134[N/3],28*[N/6],24=X16.