Полная версия

Главная arrow Информатика arrow Архитектура ЭВМ

  • Увеличить шрифт
  • Уменьшить шрифт


<<   СОДЕРЖАНИЕ   >>

Системы счисления

Человеку издревле приходилось считать различные предметы и записывать их количество. Для этих целей возникла унарная система записи, при которой числа обозначались соответствующим количеством черточек (или засечек). Например, число 5 представлялось как 111 |.

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

Таблица 1.20. Наиболее известные нумерации мира

Древнеегипетская

Древнегреческая

Вавилонская

Нумерация

нумерация

нумерация

нумерация

индейцев майя

Старокитайская

Славянская

Славянская

Латинская

нумерация

кириллическая

глаголическая

нумерация

нумерация

нумерация

Современная арабская нумерация

Египетская нумерация. Египтяне придумали эту систему около 5000 лет тому назад. Это одна из древнейших систем записи чисел (табл. 1.21), известная человеку.

Таблица 1.21. Египетская нумерация

і

1

II

III

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

п

ппп

10

Если нужно изобразить несколько десятков, то иероглиф повторяли определенное количество раз

$

100

Древняя греческая нумерация. В древнейшее время в Греции была распространена так называемая аттическая нумерация. В этой нумерации числа 1, 2, 3, 4 изображались соответствующим количеством вертикальных полосок. Число 5 записывалось знаком Р (древнее начертание буквы «пи», с которой начиналось слово «пенте» — пять).

Числа 6, 7, 8, 9 обозначались сочетаниями этих знаков:

п ги пн гни

Примерно в III в. до н. э. аттическая нумерация в Греции была вытеснена ионийской системой. Числа 1—9 в ней обозначаются первыми буквами греческого алфавита:

а = 1, р = 2, у = 3, 5 = 4, е = 5, с; = 6, С, = 7, г = 8, 0 = 9.

Вавилонская нумерация. В древнем Вавилоне примерно за 40 вв. до нашего времени создалась позиционная нумерация, т. е. такой способ записи чисел, при котором одна и та же цифра может обозначать разные числа, в зависимости от места, занимаемого этой цифрой. В вавилонской поместной нумерации ту роль, которую у нас играет число 10, играет число 60, и потому эту нумерацию называют шестидесятиричной. Числа менее 60 обозначались с помощью двух знаков: у для единицы и ^ для десятка. Эти знаки повторялись нужное число раз, например:

ттт << < < <тт

(3) (20) (32)

Нумерация индейцев майя. Эта нумерация очень интересна тем, что на ее развитие не повлияла ни одна из цивилизаций Старого Света. Сначала эта нумерация использовала пятеричную систему счисления, а потом ее приспособили для двадцатерич-ной (табл. 1.9).

Таблица 1.22. Нумерация индейцев майя

?

1

9

фф

2

10

ффф

3

11

фффф

4

ФФ

12

5

ФФФ

13

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

Таблица 1.23. Китайская нумерация

1

*

6

2

7

3

8

га

4

Л

9

5

о

0

Славянская кириллическая нумерация. Эта нумерация была создана вместе со славянской алфавитной системой для переписки священных книг для славян греческими монахами братьями Кириллом (Константином) и Мефодием в IX в. Форма записи чисел получила большое распространение в связи с тем, что имела полное сходство с греческой записью чисел (табл. 1.24). До сих пор православные церковные книги используют эту нумерацию.

Таблица 1.24. Славянская кириллическая нумерация

л - 1

I - 10

р - 100

Б - 2

к - 20

с - 200

г - 3

л - 30

т - 300

д - 4

л - 40

V - 400

е - 5

N - 50

ф - 500

5-6

а - бо

х - 600

з - 7

о - 70

ф - 700

и - 8

п - 80

IV - 800

^ - 0

ч - 00

ц - 000

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

д;8Г = 863 (800 + 60 + 3).

Для того чтобы не перепутать буквы и цифры, использовались титла — горизонтальные черточки над числами. В России славянская нумерация сохранилась до конца XVII в. При Петре I возобладала так называемая арабская нумерация.

Славянская глаголическая нумерация. Эта нумерация использовалась с VIII по XIII в. и была создана для записи чисел в священных книгах западных славян (табл. 1.12).

Таблица 1.25. Славянская глаголическая нумерация

+ 1

ЯР.»

1

Ь 100

К! *

О

сч

ю

1

О 200

<5

5>з

ПТ 30

СТО 300

Латинская (римская) нумерация. Это самая известная нумерация после арабской. С ней мы достаточно часто сталкиваемся в повседневной жизни. Это номера глав в книгах, указание века, числа на циферблате часов и т. д. Возникла эта нумерация в Древнем Риме (табл. 1.26).

Таблица 1.26. Латинская (римская) нумерация

I

1

V

5

X

10

ь

50

с

100

о

500

м

1000

Цифры числа записывались, начиная с больших значений и заканчивая меньшими, слева направо. Если цифра с меньшим значением записывалась перед цифрой с большим значением, то происходило ее вычитание.

ССХХХУН = 100+ 100 + 10 + 10 + 10 + 5+ 1 + 1 = 237,

но

ХХХ1Х= 10+10+10+10-1 =39.

Арабская нумерация. Это самая распространенная на сегодняшний день нумерация. Название «арабская» для нее не совсем верно, поскольку хоть и завезли ее в Европу из арабских стран, но там она тоже была не родной. Настоящая родина этой нумерации — Индия. В различных районах Индии существовали разнообразные системы нумерации, но в какой-то момент среди них выделилась одна. В ней цифры имели вид начальных букв соответствующих числительных на древнеиндийском языке — санскрите, использующем алфавит «Деванагари»:

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

Совокупность приемов наименования и записи чисел называется счислением.

Алфавит системы счисления — совокупность символов, используемых в данной системе счисления.

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

Разряд — номер позиции в числе (цифры нумеруются справа налево, начиная с нуля).

Вес разряда — число, равное основанию системы счисления в степени номера разряда.

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

В непозиционных системах значения цифр не изменяются при изменении их положения в последовательности. В качестве примера непозиционной системы приведем известную всем римскую систему счисления. В римской системе счисления символ X на любом месте равен 10, но в записи слева от старшего (например, ХС) символ X равен -10, а в сочетании перед младшим (например, XV) равен+10. В непозиционных системах счисления действия над числами связаны с большими трудностями и не имеют правил. В этих системах нельзя выразить отрицательные и дробные числа, поэтому непозиционные системы имеют ограниченное применение. В основном их используют для наименования дат, томов, глав и т. д.

Напротив, в позиционных системах счисления количественное значение цифры в числе зависит от ее позиции. Одним из примеров позиционной системы счисления является десятичная система.

Например, число 444 записано тремя одинаковыми цифрами, но каждая из них имеет свое значение: четыре сотни, четыре десятка и четыре единицы, т. е. его можно представить:

444 = (4 • 100 + 4 • 10 + 4 • 1) или 444 = (4 • 102 + 4 • 10' + 4 • 10°).

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

Таблица 1.27. Запись произвольных натуральных чисел

Десятичные

Двоичные

О

сн

О

II

о

0

1 = 1-2°

1

2 = 1 • 2> + 0 • 2°

10

3 = 1 • 2‘ + 1 • 2°

11

4=1 • 22 + 0 • 21 + 0 • 2°

100

5= 1 • 22 + 0 • 21 + 1 -2°

101

6 = 1 • 22 + 1 • 2> + 0 • 2°

ПО

7 = 1 • 22 + 1 • 2і + 1 • 2°

111

8=1 ? 23 + 0 • 22 + 0 • 21 + 0 ? 2°

1000

9=1 • 23 + 0 • 22 + 0 • 2і + 1 -2°

1001

10 = 1 • 23 + 0 • 22 + 1 ? 21 + 0 ? 2°

1010

Для записи чисел в позиционной системе счисления с основанием р нужно иметь алфавит из р цифр. Обычно для этого при р< 10 используют р первых арабских цифр, при р> 10 к десяти арабским цифрам добавляют латинские буквы. В качестве десятичных цифр применяются арабские цифры, а основание системы равно десяти, т. е. оно равно отношению соседних разрядов. В /ьной системе с основанием р (р — целое число больше 1) число записывается в виде последовательностей /ьных цифр, разделенных запятой на две последовательности:

Я,, Яп- ••• Я Яо, Я-1 ••• Я-пг

Позиции, расположенные левее запятой, пронумерованы справа налево числами 0, 1, 2,..., а справа от запятой — пронумерованы подряд слева направо -1, -2, -3 и т. д. Пронумерованные позиции называются разрядами.

Таким образом:

Яп Яп-х ???Я Я о Я-1 Я-т = ЁЯ,Р‘?

/ =-т

Последовательность цифр слева от запятой называется целой частью числа, а справа — дробной частью.

В современных ЭВМ в настоящее время в основном используются позиционные системы счисления с основаниями 2, 8, 16 и 10, хотя были попытки, правда не совсем успешные, применения и других систем счисления (например, троичной).

Наиболее просто осуществить перевод чисел из /ьной позиционной системы счисления в /-ную (или обратно), если имеет место соотношение /? = /*, где к — целое положительное. В этом случае перевод из р-ной системы счисления в /-ную осуществляется поразрядно, с заменой каждой /ьной цифры равным ей ^-разрядным числом в /-ной системе счисления. Разбивка числа на группы по к цифр осуществляется при движении от запятой влево и вправо, если при этом самая левая и правая группы окажутся неполными, то к ним приписывается необходимое количество нулей.

Если требуется указать основание системы, к которой относится число, то оно записывается как нижний индекс этого числа. В системе счисления с основанием р {р-ная система счисления) единицами разрядов служат последовательные степени числа р.

В системе счисления с основанием р в одном разряде могут стоять символы от 0 до - 1). Так, в 16 системе счисления в одном разряде могут стоять символы от 0 до 15 (табл. 1.28).

Таблица 1.28. Системы счисления

Двоичная (основание 2)

Восьмеричная (основание 8)

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

Шестнадцатеричная (основание 16)

алфавит

триады

алфавит

тетрады

0

0

000

0

0

0000

1

1

001

1

1

0001

2

010

2

2

0010

3

011

3

3

ООП

4

100

4

4

0100

5

101

5

5

0101

6

по

6

6

оно

7

111

7

7

0111

8

8

1000

9

9

1001

А

1010

В

1011

С

1100

О

1101

Е

1110

Б

1111

Примечание. К нетрадиционным системам счисления относится фибоначчие-ва система счисления. Базисом фибоначчиевой системы счисления является последовательность 1, 2, 3, 5, 8, 13, 21, 34, 55, ..., т. е. подряд идущие числа Фибоначчи. В качестве цифр в этой системе счисления используются только 0 и 1. Например: (37)10 = 34 + 3 = (100000100)ф; (25),0 = 21 + 3 + 1 = (1000101)ф.

Пр и ме р 1.36. Перевести двоичное число (1110101,1011111)2 в восьмеричную систему счисления. Так как 8 = 23 и к= 3, тогда

001 ПО 101, 101 111 100(2) = 165,574(8)

либо другой вариант записи:

(001 ПО 101, 101 1 1 1 100)2 = (165,574)8.

Пр и мер 1.37. Перевести восьмеричное число (73,16)8 в двоичную систему счисления.

(73,16)8 = (111 011, 001 110) = (111011,00111)2.

Пр и мер 1.38. Перевести двоичное число (11100,01 )2 в шестнадцатеричную систему счисления. Принимая во внимание, что 16 = 24 и к = 4,

(11100,01)2= (0001 1100, 0100) = (1С,4)16.

Так как только 10 цифр из 16 в шестнадцатеричной системе счисления имеют общепринятые обозначения, то для записи цифр 10, 11, 12, 13, 14 и 15 используются соответственно буквы А, В, С, О, Е и Е.

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

(1100)2= (1000 + 100) = (8 + 4) = (12)|0= (С)|6.

Этим же приемом можно воспользоваться и при обратном переводе:

(С)16= (12)10= (8 + 4) = (1000 + 100) = (1100)2.

Для этого надо лишь запомнить следующую таблицу для 2" (табл. 1.29).

Таблица 1.29. Рабочая таблица

Десятичная система

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

счисления

счисления

1

1

2

10

4

100

8

1000

Пр имер 1.39. Перевести число (1АР,4)|6 в двоичную систему счисления.

(1АР,4)|6 = (0001 1010 1111, 0100) = (110101111,01)2.

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

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

ХрпРпАп_1Рп-2п_2Р"-2 + ... + Л2РХ + А, Р°.

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

  • а) число (11101000)2 перевести в десятичную систему счисления
  • (11101000)2 =

= 1 • 27+ 1 • 26+ 1 • 25+ 0 ? 24 + 1 • 23+ 0 • 22 + + 0 • 21 + 0 • 2°= (232)10;

  • б) число (75 013)8 перевести в десятичную систему счисления (75 013)8 = 7 • 84+ 5 • 83+ 0 • 82+ 1 • 81 + 3 • 8° = (31 243)10;
  • в) число (FDA1),6 перевести в десятичную систему счисления (FDA1)I6 = 15- 163+ 13- 162+ 10- 16‘+ 1 • 16° = (64 929)10;
  • г) перевести число из восьмеричной системы счисления в десятичную: (703,04)8 -» ( )10 = ?
  • (703,04)8 = 7 • 82+ 0 • 81 + 3 • 8°+ 0 • 8Ч + 4 • 8~2 = (451,0625)|0;
  • д) перевести число (В2Е,4)16 -» ( )10 (В2Е,4)|6= 11 • 162+ 2 • 16'+ 14- 16°+4- 16~‘ = (2862,25)10;
  • е) перевести число (10101101,101 )2 -> ( )10
  • (10101101,101)2 =

= 1 -27+ 0-26 + 1 • 25 + 0 • 24 + 1 • 23+ 1 • 22+0 • 2'+ 1 • 2° + + 1 • 2"‘+0.2~2+ 1 • 2~3 = (173,625) 10 .

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

Сформулируем алгоритм перевода целых чисел из системы с основанием р в систему с основанием

  • 1. Основание новой системы счисления выразить цифрами исходной системы счисления и все последующие действия производить в исходной системе счисления.
  • 2. Последовательно выполнять деление данного числа и получаемых целых частных на основание новой системы счисления до тех пор, пока не получим частное, меньшее делителя.
  • 3. Полученные остатки, являющиеся цифрами числа в новой системе счисления, привести в соответствие с алфавитом новой системы счисления.
  • 4. Составить число в новой системе счисления, записывая его, начиная с последнего разряда.

П ример 1.41. Перевести десятичное число (65) 10 в двоичную систему счисления:

Таким образом, получаем: (65)10 = (1000001 )2 = (01000001 )2. Обратите внимание на то, что ведущий нуль в двоичном представлении числа может быть добавлен для дополнения двоичного представления до 8 бит.

Пр и мер 1.42. Перевести десятичное число (571 )10 в восьмеричную систему счисления.

571

8

56

71

8

11

64

8

8

" 8

7

8

1

3

0

Результат. (571)|0 = (1073)8.

Пр и мер 1.43. Перевести десятичное число (7467) 10 в шестнадцатеричную систему счисления.

7467

16

7456

466

16

11

464

29

16

2

16

1

13

Результат. (7467)10= (Ш2В)16.

Пример 1.44. Перевести число (181 )|0 в восьмеричную систему счисления.

  • 22 !_ 16 2
  • 176

Х^б^у

Результат. (181)|0 = (265)8.

Пр и мер 1.45. Перевести число (622) 10 в шестнадцатеричную систему счисления.

Пр и мер 1.46. Перевести число (23) )0 в двоичную систему счисления.

Результат. (23)10 = (10111 )2.

Пр и мер 1.47. Перевести число (363)10 в двоичную систему счисления.

Иногда более удобно записать алгоритм перевода в форме таблицы (табл. 1.30).

Таьлица 1.30. Рабочая таблица

Делимое

363

181

90

45

22

11

5

2

1

Делитель

2

2

2

2

2

2

2

2

2

Остаток

1

1

0

1

0

1

1

0

1

Результат. (363)|0 = (101101011)2.

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

Сформулируем алгоритм перевода правильной дроби с основанием р в дробь с основанием #.

  • 1. Основание новой системы счисления выразить цифрами исходной системы счисления и все последующие действия производить в исходной системе счисления.
  • 2. Последовательно умножать данное число и получаемые дробные части произведений на основание новой системы до тех пор, пока дробная часть произведения не станет равной нулю или будет достигнута требуемая точность представления числа.
  • 3. Полученные целые части произведений, являющиеся цифрами числа в новой системе счисления, привести в соответствие с алфавитом новой системы счисления.
  • 4. Составить дробную часть числа в новой системе счисления, начиная с целой части первого произведения.

Пр и мер 1.48. Перевести число (0,65625) 10 в восьмеричную систему счисления.

  • 65625 *_8
  • 65625 *_8
  • 00000

ю_ (0,52)8.

Результат. (0,65625)

Пр и мер 1.49. Перевести число (0,65625)10 в шестнадцатеричную систему счисления.

  • 0,
  • 10

X

65625 16

X

  • 50000 16
  • 00000

Результат. (0,65625)10= (0,А8)16.

Пр и мер 1.50. Перевести число (0,65)10 в двоичную систему счисления.

0

65x2

1

3x2

0

6x2

1

2x2

0

4x2

0

8x2

1

2x2

Результат, полученный за шесть шагов: (0,65)10 « (0,101001 )2.

Очевидно, что этот процесс может продолжаться бесконечно, давая все новые и новые знаки в изображении двоичного эквивалента числа (0,65)|(). Например, за четыре шага получаем число (0,1010)2, а за пять шагов число (0,10100)2 и т. д. Такой бесконечный процесс обрывают на некотором шаге, когда считают, что получена требуемая точность представления числа.

Пр и мер 1.51. Перевести десятичную дробь (0,5625) ,0 в двоичную систему счисления.

  • 1 о
  • 5625
  • 1250
  • 2500
  • 5000
  • 5000

Результат. (0,5625) 10 = (0,1001 )2.

Пр и мер 1.52. Перевести число (0,3125) |0 в восьмеричную систему счисления.

0

3125 х 8

2

5000 х 8

4

0000

Результат. (0,3125),0 = (0,24)8.

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

Пр имер 1.53. Перевести число (25,125) 10 в двоичную систему счисления.

Таким образом: (23)10 = (10111)2; (0,125) 10 = (0,001 )2. Результат. (23,125)10 = (101 11,001 )2.

Пр имер 1.54. Перевести число (17,25) 10 в двоичную систему счисления.

Переводим целую часть:

Переводим дробную часть:

17

2

0,

25

1

8

2

х2

0

4

2

0

50

0

2

2

х2

0

1

1

00

Результат. (17,25) 10 = (10001,01 )2.

Пр имер 1.55. Перевести число (124,25) 10 в восьмеричную систему счисления.

Переводим целую часть:

Переводим дробную часть:

124

8

0, 25

4

15

8

х 8

7

1

2 00

Пр и мер 1.56. Перевести в двоичную систему счисления.

  • (537,1)8 = (101 01 1 1 1 1, 001 )2;
  • 5 3 7 1
  • (1АЗ,Р)16 = (1 1010 ООП, 1111)2.
  • 1 А 3 Р

Примечание. Для перевода двоичных чисел в восьмеричную и шестнадцатеричную системы можно использовать более простые правила. В трех двоичных разрядах (триаде) можно представить любой восьмеричный символ от 0(000) до 7(111). Аналогично и любой шестнадцатеричный символ можно представить четырьмя двоичными разрядами (тетрадой): 0(0000)— И( 1111).

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

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

Перевести (1101111001,1101 )2 —> ( )8.

  • 001101111001.110100 = 1571 -648.
  • 15 7 1 6 4

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

Перевести (11111111011,100111)2 -> ( )16.

  • 011111111011.10011100 = 7РВ.9С16.
  • 7 Р В 9 С

Пр и мер 1.58. Перевести в двоичную систему счисления, а) (305.4)8 —> ( )2.

  • 11000101.12.
  • 8
  • 3 0 5
  • 011 000 101
  • б) (7В2.Е)16 ( )2.
  • 7 В 2 0111 1010 0010

Е = 11110110010.111

іб

1110

Пр и мер 1.59. Перевести число (175,24)8 из восьмеричной в шестнадцатеричную систему.

  • 1 7 5
  • 001 111 101
  • 2 4= 1111101.01012 = 01111101.01012 = 70.516.
  • 010 100
  • 7 П

Результат. (175,24)8 = (70,5)16.

 
<<   СОДЕРЖАНИЕ   >>