Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛЕКЦИЯ 2-3.docx
Скачиваний:
5
Добавлен:
01.07.2025
Размер:
189 Кб
Скачать
☆

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

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

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

Целые числа кодируются двоичным кодом достаточно.

Таким образом, 1910= 100112 .

Для кодирования целых чисел от 0 до 255 достаточно иметь 8 разрядов двоичного кода (8 бит). Шестнадцать бит позволяют закодировать целые числа от 0 до 65535, а 24 бита — уже более 16,5 миллионов разных значений.

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

Пример. Перевести данное число из десятичной системы счисления в двоичную (получить пять знаков после запятой в двоичном представлении). а) 380,1875(10); б) 115,94(10). Решение. а) 380 0 1875 380,1875(10)=101111100,0011(2)

190 0 0 375

95 1 0 75

47 1 1 5

23 1 1 0

11 1

5 1

2 0

1 1

б) 115 1 94 115,94(10)=1110011,111100(2)

57 1 1 88

28 0 1 76

14 0 1 52

7 1 1 04

3 1 0 08

1 1 0 16

Для кодирования действительных чисел используют 80-разрядное кодирование. При этом число предварительно преобразуется в нормализованную форму:

3,1415926 = 0,31415926·101

300 000 = 0,3·106

123 456 789 = 0,123456789 · 1010

Первая часть числа называется мантиссой, а вторая — характеристикой. Большую часть из 80 бит отводят для хранения мантиссы (вместе со знаком) и некоторое фиксированное количество разрядов отводят для хранения характеристики (тоже со знаком).

Если необходимо перевести число из двоичной системы счисления в систему счисления, основанием которой является степень двойки, достаточно объединить цифры двоичного числа в группы по столько цифр, каков показатель степени, и использовать приведенный ниже алгоритм. Например, если перевод осуществляется в восьмеричную систему, то группы будут содержать три цифры (8=23). В целой части числа группировка производится справа налево, в дробной части — слева направо. Если в последней группе недостает цифр, дописываются нули: в целой части — слева, в дробной — справа. Затем каждая группа заменяется соответствующей цифрой новой системы. Соответствия приведены в таблице.

Переведем из двоичной системы в шестнадцатеричную число 1111010101,11(2). Решение 001111010101,1100(2)=3D5,C(16).

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

Это и есть представление исходного числа в десятичной системе счисления. Пример. Перевести данное число в десятичную систему счисления:

а) 1000001(2)=1·26 + 0·25 + 0·24 + 0·23 + 0·22 + 0·21 + 0·25 + 1·20 =65(10).

Замечание. Если в каком-либо разряде стоит нуль, то соответствующее слагаемое можно опустить.

б) 1000011111,0101(2)=1·29 + 1·24 + 1·23 + 1·22 + 1·21 + 1·20 + 1·2-2 + 1·2-4 = 512+16+8+4+2+1+0,25+0,0625=543,3125(10).

в) 1216,04(8)=1·83 + 2·82 + 1·81 + 6·80 + 4·8-2 = 512+128+8+6+0,0625=654,0625(10).

г) 29А,5(16)=2·162 + 9·161 + 10·160 + 5·16-1 = 512+144+10+0,3125=656,3125(10).

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

+

0

1

0

0

1

1

1

10

×

0

1

0

0

0

1

0

1

+

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

+

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

2

0

2

4

6

8

A

C

E

10

12

14

16

18

1A

1C

1E

3

0

3

6

9

С

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)+ 111000010(2)= 10111000110(2);

+ 10000000100

111000010

10111000110(2).

б) 223,2(8)+ 427,54(8) = 652,74(8);

+ 223,2

427,54

652,74(8).

в) ЗВЗ,6(16)+38В,4(16)=73Е,A(16);

+ 3B3,6

38B,4

73E,A(16).

Пример. Выполнить вычитание:

Пример: Выполнить умножение: