Скачиваний:
60
Добавлен:
26.03.2015
Размер:
247.32 Кб
Скачать

Главная

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

1.1. Понятие системы счисления

Системы счисления (c/c) делятся на позиционные и непозиционные. В непозиционных системах вес цифры (т.е. тот вклад, который она вносит в значение числа) не зависит от ее позиции в записи числа. Так, в римской системе счисления в числе ХХХII (тридцать два) вес цифры Х в любой позиции равен десяти.

В позиционных системах счисления вес каждой цифры изменяется в зависимости от ее положения (позиции) в последовательности цифр, изображающих число. Например, в числе 757,7 первая семерка означает 7 сотен, вторая – 7 единиц, а третья – 7 десятых долей единицы. Сама же запись числа 757,7 означает сокращенную запись выражения 700 + 50 + 7 + 0,7 = 7 ∙ 102 + 5 ∙ 101 + 7 ∙100 + 7 ∙ 10–1 = 757,7.

Основание позиционной c/c – это количество различных знаков или символов, используемых для изображения цифр в данной системе. За основание системы можно принять любое натуральное число. Следовательно, возможно бесчисленное множество позиционных систем: двоичная, троичная, четверичная и т.д. Запись чисел в каждой из

систем счисления с основанием q означает сокращенную запись выражения an–1 qn –1 + an–2 qn –2+ ... + a1 q1 + a0 q0 + a–1 q–1 + ... + am qm, где n и m – число целых и дробных разрядов, соответственно.

Основание с/с соответствует количеству цифр (знаков), используемых для записи чисел в этой с/с. Например, основанием десятичной с/с есть число 10, и только десять цифр (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) используются при записи чисел в этой с/с. В двоичной с/с используются две цифры – 0 и 1, в шестнадцатеричной – 16, причем для чисел 10, 11, 12, 13, 14, 15 в этой с/с введены дополнительные цифры (знаки) – A, B, C, D, E, F, соответственно, т.к. традиционно используемых цифр недостаточно.

Основание 10 не слишком удобно (в цепях электрических схем необходимо для этого иметь 10 различных сигналов). С технической точки зрения, чем меньше сигналов в схеме, тем лучше. Наименьшее основание, которое может быть у позиционной с/с, – это 2. Поэтому двоичная с/с широко используется в современной вычислительной технике, в устройствах автоматики и связи.

Кроме десятичной с/с для «общения с компьютером» широко используются системы с основанием, являющимся целой степенью числа 2, а именно двоичная, восьмеричная и шестнадцатеричная.

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

Таблица 1.1

1

Представление чисел в с/с

Десятичная

Двоичная

Восьмеричая с/c

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

с/c

с/c

 

 

0

0

0

0

1

1

1

1

2

10

2

2

3

11

3

3

4

100

4

4

5

101

5

5

6

110

6

6

7

111

7

7

8

1000

10

8

9

1001

11

9

10

1010

12

А

11

1011

13

B

12

1100

14

C

13

1101

15

D

14

1110

16

E

15

1111

17

F

16

10000

20

10

17

10001

21

11

Как видно из таблицы, недостатком 2 с/с является быстрый рост числа разрядов, необходимых для записи чисел. В восьмеричной и шестнадцатеричной с/c требуется соответственно в три (восьмеричная) и в четыре (шестнадцатеричная) раза меньше разрядов, чем в двоичной системе (ведь числа 8 и 16 – соответственно, третья и четвертая степени числа 2).

1.2. Перевод чисел

Перевод из 8-й и 16-й в 2-ю с/c

Для перевода достаточно каждую цифру числа заменить эквивалентной ей двоичной триадой (тройкой цифр) или тетрадой (четверкой цифр).

Пример

502(8 c/c) → ? (2 c/c)

502(8 c/c) = 101 000 010(2 c/c)

Перевод из 2-й с/c в 8-ю и 16-ю

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

Пример

1111110(2 c/c) → ? (8 c/c)

1 111 110(2 c/c) = 001 111 110(2 c/c) = 176(8 c/c)

2

0 2 1
1
25 2
24 12 2
1 12 6 2
0 6 3 2

1111010101,1100(2 c/c) → ? (16 c/c)

0011 1101 0101, 1100(2 c/c) = 3D5,C(16 c/c).

Перевод из произвольной с/с в 10-ю и наоборот

Пусть имеется с/с с основанием k и некоторое число a1 ...an в этой с/с, где a1,...,an

цифры этого числа. Данное число можно представить в виде: a1 kn –1+a2 kn – 2+...+an k0.

Пример

110011(2 c/c) → ? (10c/c)

110011(2 c/c) = 1 ∙ 10101+1 ∙ 10100+0 ∙ 1011+0 ∙ 1010+1 ∙ 101+1 ∙ 100(2 c/c)= =1∙ 25+1∙ 24+0∙ 23+0∙ 22+1∙ 21+1∙ 20 (10 c/c)= 32 + 16 + 2 + 1 = 51(10 c/c),

1216,04(8 c/c) → ? (10 c/c)

1216,04(8 c/c) = 1 ∙ 83 + 2 ∙ 82 + 1 ∙ 81 + 6 ∙ 80+4 ∙ 8–2= 512 + 128 + 8 + 6 + 0,0625 = 654,0625(10 c/c).

Перевод из 10 с/c в произвольную

Данный алгоритм является обратным к алгоритму, рассмотренному выше. Исходное число делится на основание с/с, в которую требуется перевести число. Первый шаг: разделить исходное число на r (основание новой с/c), зафиксировать остаток от деления (число от 0 до r – 1) и частное. Второй шаг: если частное больше r, то снова разделить его на r, продолжая фиксировать остаток от деления. Процесс деления частных продолжать до тех пор, пока частное не станет меньше r. Третий шаг: все полученные в процессе деления остатки от деления и последнее частное будут образовывать цифры исходного числа в с/с с основанием r. Выписав все найденные

цифры в обратном порядке (начиная с последнего частного), получим искомое представление числа в новой с/c.

Например, требуется 25(10 c/c) перевести в 2-ю с/c. Согласно

алгоритму, получаем 11001(2 c/c). Проверим результат:

25(10 c/c) = 11001(2 c/c) = 1 ∙ 24 + 1 ∙ 23 + 0 ∙ 22 + 0 ∙ 21 + 1 ∙ 20 = 25(10 c/c).

Перевод дробной части числа

Чтобы правильную дробь перевести из с/c с основанием r в c/c с основанием q необходимо последовательно умножать дробную часть (сначала самого числа, а потом получающихся произведений) на новое основание

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

0 3125

8

2 5000

8

4 0

Пример

0,3125(10 c/c) → ? (8 c/c)

0,3125(10 c/c) = 0,24(8 c/c)

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

3

1.3. Выполнение арифметических операций

При сложении необходимо помнить, в какой с/с введутся расчеты. Так, если получаем число два при сложении чисел в 2 с/с, то заменяем его на 10, т.к. цифры 2 в двоичной с/с нет. При выполнении арифметических операций в с/c с основанием r необходимо иметь соответствующие таблицы сложения и умножения. Ниже представлены таблицы сложения и умножения для r = 2:

+

0

1

 

 

 

0

1

1

1

1

10

×

0

1

0

0

0

1

0

1

Далее приведены таблицы сложения и умножения для r = 8:

+

0

1

2

3

4

5

6

7

 

 

 

 

 

 

 

 

 

0

0

1

2

3

4

5

6

7

1

1

2

3

4

5

6

7

10

2

2

3

4

5

6

7

10

11

3

3

4

5

6

7

10

11

12

4

4

5

6

7

10

11

12

13

5

5

6

7

10

11

12

13

14

6

6

7

10

11

12

13

14

15

7

7

10

11

12

13

14

15

16

×

0

1

2

3

4

5

6

7

0

0

0

0

0

0

0

0

0

1

0

1

2

3

4

5

6

7

2

0

2

4

6

10

12

14

16

3

0

3

6

11

14

17

22

25

4

0

4

10

14

20

24

30

34

5

0

5

12

17

24

31

36

43

6

0

6

14

22

30

36

44

52

7

0

7

16

25

34

43

52

61

Таблицы сложения и умножения для r = 16 будут выглядеть следующим образом:

+

0

1

2

3

4

5

6

7

8

9

A

 

B

C

D

E

F

 

0

0

1

2

3

4

5

6

7

8

9

A

 

B

C

D

E

F

 

1

1

2

3

4

5

6

7

8

9

A

B

 

C

D

E

F

10

 

2

2

3

4

5

6

7

8

9

A

B

C

 

D

E

F

10

11

 

3

3

4

5

6

7

8

9

A

B

C

D

 

E

F

10

11

12

 

4

4

5

6

7

8

9

 

A

B

C

D

E

 

F

10

11

12

13

 

5

5

6

7

8

9

 

A

 

B

C

D

E

F

 

10

11

12

13

14

 

6

6

7

8

9

 

A

 

B

 

C

D

E

F

10

 

11

12

13

14

15

 

7

7

8

9

 

A

 

B

 

C

 

D

E

F

10

11

 

12

13

14

15

16

 

8

8

9

 

A

 

B

 

C

 

D

 

E

F

10

11

12

 

13

14

15

16

17

 

9

9

 

A

 

B

 

C

 

D

 

E

 

F

10

11

12

13

 

14

15

16

17

18

 

A

 

A

 

B

 

C

 

D

 

E

 

F

10

11

12

13

14

 

15

16

17

18

19

 

B

 

B

 

C

 

D

 

E

 

F

10

11

12

13

14

15

 

16

17

18

19

1A

 

C

 

C

 

D

 

E

 

F

10

11

12

13

14

15

16

 

17

18

19

1A

1B

 

D

 

D

 

E

 

F

10

11

12

13

14

15

16

17

 

18

19

1A

1B

1C

 

E

 

E

 

F

10

11

12

13

14

15

16

17

18

 

19

1A

1B

1C

1D

 

F

 

F

10

11

12

13

14

15

16

17

18

19

 

1A

1B

1C

1D

1E

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

×

 

0

1

2

3

4

5

 

6

 

7

 

8

9

 

 

A

 

B

 

C

 

D

 

E

 

F

 

0

 

0

 

0

 

0

 

0

 

0

 

0

 

0

 

0

 

0

 

0

 

 

0

 

0

 

0

 

0

 

0

 

0

 

1

 

0

1

2

3

4

5

 

6

 

7

 

8

9

 

 

A

B

C

D

E

F

 

4

2

0

2

4

6

8

A

C

E

10

12

14

16

18

1A

1C

1E

3

0

3

6

9

C

F

12

15

18

1B

1E

21

24

27

2A

2D

4

0

4

8

C

10

14

18

1C

20

24

28

2C

30

34

38

3C

5

0

5

A

F

14

19

1E

23

28

2D

32

37

3C

41

46

4B

6

0

6

C

12

18

1E

24

2A

30

36

3C

42

48

4E

54

5A

7

0

7

E

15

1C

23

2A

31

38

3F

46

4D

54

5B

62

69

8

0

8

10

18

20

28

30

38

40

48

50

58

60

68

70

78

9

0

9

12

1B

24

2D

36

3F

48

51

5A

63

6C

75

7E

87

A

0

A

14

1E

28

32

3C

46

50

5A

64

6E

78

82

8C

96

B

0

B

16

21

2C

37

42

4D

58

63

6E

79

84

8F

9A

A5

C

0

C

18

24

30

3C

48

54

60

6C

78

84

90

9C

A8

B4

D

0

D

1A

27

34

41

4E

5B

68

75

82

8F

9C

A9

B6

C3

E

0

E

1C

2A

38

46

54

62

70

7E

8C

9A

A8

B6

C4

D2

F

0

F

1E

2D

3C

4B

5A

69

78

87

96

A5

B4

C3

D2

E1

Примеры

10000000100(2 c/c) + 111000010(2 c/c) = 10111000110(2 c/c)

3B3,6(16 c/c) + 38B,4(16 c/c) = 73E,A(16 c/c)

1510,2(8 c/c) – 1230,54(8 c/c) = 257,44(8 c/c) 100111(2 c/c) × 1000111(2 c/c) = 101011010001(2 c/c)

1170,64(8 c/c) × 46,3(8 c/c) = 57334,134(8 c/c)

1.4.Коды чисел

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

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

1)разряды числа в коде жестко связаны с определенной разрядной сеткой;

2)для записи кода знака в разрядной сетке отводится фиксированный, строго определенный разряд.

Например, если за основу представления кода взят один байт, то для представления числа будет отведено 7 разрядов, а для записи кода знака один разряд.

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

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

5

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

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

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

Пример Для числа +1101:

прямой код

обратный код

дополнительный код

Для числа –

0,0001101

0,0001101

0,0001101

1101:

 

прямой код

обратный код

дополнительный код

 

1,0001101

1,1110010

1,1110011

 

Особенности сложения чисел в обратном и дополнительном кодах

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

Пример

Сложим двоичные числа X и Y в обратном и дополнительном кодах. Если X= – 101,Y= –11, то пользуясь правилами двоичной арифметики получим

X= –101

Y= –110

X + Y = –1011

Сложим числа, используя коды.

Прямой код

Сложение в обратном

Сложение в

коде

дополнительном коде

 

 

 

 

 

 

Xпр =

 

 

 

 

Xобр = 1,1111010

Xдоп = 1,1111011

1,0000101

Yобр = 1,1111001

Yдоп = 1,1111010

Yпр =

1 1,1110011

отбрасывается

1 ) 1,1110101

 

 

+1

 

1,0000110

 

 

 

 

 

 

 

 

 

 

(X + Y)обр = 1,1110100

(X + Y)доп = 1,1110101

 

 

 

 

 

 

6

Соседние файлы в папке Теория