Отключаемые счетчики электроэнергии на пульте. Все с документами пломбами, гарантией и без посредников!

Дополнение Б – Представление чисел

Дополнение Б – Представление чисел

Представление чисел в позиционной системе исчисления

Любое n-разрядное число K в позиционной системе может быть представлено в виде следующего полинома

где ai – весовые коэффициенты при соответствующих разрядах, X – основание системы.

Основание системы определяет количество чисел, которое используется в системе исчисления. Коэффициенты ai могут быть представлены только числами из этого набора. Например, в двоичной системе (основание X=2), используются числа 0 и 1, в десятичной (X=10) – 0…9, в шестнадцатеричной (X=16) – 0…9 и символы A,B,C,D,E,F.

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

K = an-1*2n-1 + an-2*2n-2  + … + a1*21 + a0.

Двоичные числа могут отражать до 2n уникальных комбинаций и, соответственно, предоставляют диапазон изменения переменных 0…2n-1. Так для 8-разрядных чисел это 0…255­10, для  16-разрядных – 0…655310 и т.д. (индексы 2,10,16 в обозначениях чисел используется как показатель основания системы).

В табл.1 приведен пример записи чисел в трех различных системах исчисления.

Табл.1. Числа в различных системах исчисления.

Десятичная

система

Двоичная

система

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

система

Десятичная

система

Двоичная

система

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

система

0

0

0

8

1000

8

1

1

1

9

1010

9

2

10

2

10

1001

A

3

11

3

11

1011

B

4

100

4

12

1100

C

5

101

5

13

1101

D

6

110

6

14

1110

E

7

111

7

15

1111

F

Представление чисел в дополнительном коде

Дополнительный код это наиболее распространенная форма представления знаковых чисел. Диапазон изменения чисел для n-разрядных данных в двоичной системе -2n-1…2n-1-1.

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

– X = 2n – X   (2).

  Выражение (2) может быть записано также в следующем виде

– X = 2n-1 – X + 1 .   

Из-за этого дополнительный код иногда называют “дополнение до двух” (2n-1 – X – действие инверсии или “дополнение до одного” и +1 – действие “дополнение до двух”).

Так, например, можно изменить знак 1-байтового числа 9510 на противоположный 

9510­ = 010111112 = 5F16

– 9510­ = 111111112 – 10111112 + 12 = 101000012 = A116

Старший разряд в дополнительном коде всегда является показателем знака числа (знаковый разряд). У положительных чисел MSB=0, а у отрицательных – MSB=1. Модуль наибольшего положительного числа на единицу меньше модуля наименьшего отрицательного числа.

Табл.2. Представление чисел в дополнительном коде.

Десятичная

система

Двоичная

система

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

система

Десятичная

система

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

система

Двоичная

система

7

0111

7

-1

F

1111

6

0110

6

-2

E

1110

5

0101

5

-3

D

1101

4

0100

4

-4

C

1100

3

0011

3

-5

B

1011

2

0010

2

-6

A

1010

1

0001

1

-7

9

1001

0

0000

0

-8

8

1000

Двоично-десятичное кодирование

Для хранения десятичных чисел часто используется двоично-десятичное кодирование (ДДК). В этом случае байты разбиваются на тетрады, в каждой из которых размещаются двоично-кодированные десятичные числа. Например, числу 10010110­2 в ДДК соответствует десятичное число 9610 (1001­2 = 910 – старший полубайт, 0110­2 = 610 – младший полубайт).

ДДК применяется в основном для представления пользовательской информации в удобной и понятной для человека десятичной системе исчисления. Однако формат ДДК позволяет хранить в одном байте только 100 десятичных чисел (числа 0…9910). И, кроме того, далеко не каждый микропроцессор имеет в своей системе команды для обработки чисел в ДДК (в частности, у микроконтроллеров AVR такие команды отсутствуют).

Представление чисел в форме с фиксированной запятой

Если полином из (1) умножить на X-m, где m неотрицательное целое число, то получим выражение для представления чисел с фиксированной запятой:

Числа такого типа содержат две части: целую и дробную. Под целую часть отводиться n-m разрядов, а под дробную m разрядов. Естественно, что в случае m=0 дробная часть отсутствует и (3) переходит формулу (1).

Например, 8-разрядное двоичное число K с m=4 будет иметь вид

 K =a7*23 + a6*22 + a5*21 + a4*20 + a3*2-1 + a2*2-2 + a1*2-3 + a0*2-4 (3).

Разряды a7a6a5a4 представляют собой целую часть числа, а a3a2a1a0 – дробную.

Формат чисел с фиксированной запятой имеет обозначение (N.Q), где N и Q число целых и дробных разрядов соответственно. Так в предыдущем примере число K имеет формат (4.4).

При программировании 8-разрядных микроконтроллеров на ассемблере в подобной форме представления, как правило, нет необходимости. Однако числа с фиксированной запятой имеют определенные преимущества при цифровой обработке сигналов в специализированных DSP (Digital Signal Processor) процессорах, где их поддержка введена аппаратном уровне.

Представление чисел в форме с плавающей запятой

Числа с плавающей запятой имеют экспоненциальную форму записи, при которой отдельно представляются мантисса и порядок числа.    

                      K = M * 2 E,

где M – мантисса, E – порядок.

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

Как M, так и E, могут быть знаковыми числами. Мантисса должна быть представлена в виде числа с фиксированной запятой и находиться в пределах 0≤|m|≤1, а порядок M – виде целого числа.

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

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

Представление символьной информации в кодировке ASCII

ASCII (American Standard Code for Information Interchange) – общепринятый стандарт кодирования информации. В соответствии с ним каждому символу из табл.3 сопоставляется индивидуальный 7-разрядный числовой код. Таблица разделена на 128 частей, но реально, только диапазону адресов 0x20…0x7E соответствует информация, которая воспринимается, как  символьная. Остальные кода, размещенные по адресам 0x00…0x1F и 0x7F, отведены командам управления. Большинство из них поддерживает любая терминальная программа, совместимая с протоколом обмена ASCII. Набор из 21 команды очень универсален и предоставляет широкие возможности по управлению процессом передачи данных. Наиболее распространенные из них приведены в табл.4.

Символы в таблице ASCII расположены не случайным образом, а имеют строгий порядок. Кода символов ‘0’…‘9’ получаются добавлением смещения 0x30 к своему числовому представлению. Буквы ‘A’…‘Z’ имеют порядок следования аналогичный латинскому алфавиту и получаются добавлением смещения 0x41 к порядковому номеру буквы в алфавите. То же самое относится к набору из 26 символов нижнего регистра ‘a’…‘z’ для получения, которых необходимо смещение 0x61.

Табл.3. Таблица символов в кодировке ASCII:

Десятичное

значение

Шестнад

цатиричное

значение

Символ

Десятичное

значение

Шестнад

цатиричное

значение

Символ

Десятичное

значение

Шестнад

цатиричное

значение

Символ

Десятичное

значение

Шестнад

цатиричное

значение

Символ

0

0

NUL

32

20

 

64

40

@

96

60

`

1

1

SOH

33

21

!

65

41

A

97

61

a

2

2

STX

34

22

"

66

42

B

98

62

b

3

3

ETX

35

23

#

67

43

C

99

63

c

4

4

EOT

36

24

$

68

44

D

100

64

d

5

5

ENQ

37

25

%

69

45

E

101

65

e

6

6

ACK

38

26

&

70

46

F

102

66

f

7

7

BEL

39

27

71

47

G

103

67

g

8

8

BS

40

28

(

72

48

H

104

68

h

9

9

HT

41

29

)

73

49

I

105

69

i

10

A

LF

42

2A

*

74

4A

J

106

6A

j

11

B

VT

43

2B

+

75

4B

K

107

6B

k

12

C

FF

44

2C

,

76

4C

L

108

6C

l

13

D

CR

45

2D

77

4D

M

109

6D

m

14

E

SO

46

2E

.

78

4E

N

110

6E

n

15

F

SI

47

2F

/

79

4F

O

111

6F

o

16

10

DLE

48

30

0

80

50

P

112

70

p

17

11

DC1

49

31

1

81

51

Q

113

71

q

18

12

DC2

50

32

2

82

52

R

114

72

r

19

13

DC3

51

33

3

83

53

S

115

73

s

20

14

DC4

52

34

4

84

54

T

116

74

t

21

15

NAK

53

35

5

85

55

U

117

75

u

22

16

SYN

54

36

6

86

56

V

118

76

v

23

17

ETB

55

37

7

87

57

W

119

77

w

24

18

CAN

56

38

8

88

58

X

120

78

x

25

19

EM

57

39

9

89

59

Y

121

79

y

26

1A

SUB

58

3A

:

90

5A

Z

122

7A

z

27

1B

ESC

59

3B

;

91

5B

[

123

7B

{

28

1C

FS

60

3C

92

5C

\

124

7C

|

29

1D

GS

61

3D

=

93

5D

]

125

7D

}

30

1E

RS

62

3E

94

5E

^

126

7E

~

31

1F

US

63

3F

?

95

5F

_

127

7F

DEL

Табл.4. Описание наиболее распространенных управляющих символов ASCII:

Управляющие

символы

Описание

Форма подстановки в текст программы

LF

Line Feed (Перевод строки). Указывает на движение курсора дисплея к началу следующей строки (на одну строку вниз).

\n

CR

Carriage Return (Перевод каретки). Указывает на движение механизма печати или курсора дисплея к исходной (крайней левой) позиции текущей строки.

\r

BEL

Bell (Звонок). Используется для управления устройствами сигнализации.

\a

BS

Backspace (Возврат на один символ). Указывает на движение механизма печати или курсора дисплея назад на одну позицию.

\b

FF

Form Feed (Перевод страницы). Указывает на движение курсора дисплея к исходной позиции следующей страницы экрана.

\f

HT

Horizontal Tabulation (Горизонтальное Табулирование). Указывает на  движение курсора дисплея до следующей предписанной позиции.

\t

VT

Vertical Tabulation (Вертикальное Табулирование). Указывает на движение курсора дисплея к следующей группе строк.

\v

NUL

Null (Нет данных). Используется для передачи в случае отсутствия данных.

\0


Категория: Микроконтроллеры
Метки:

Написать коментарий

*
= 3 + 1

Добавить изображение

Последние статьи