Системы счисления и форматы представления числовых данных

PAGE 4

Дисциплина «Микроконтроллеры в системах управления», 3-й курс, семестр 6. Модуль 1 – Тема 12

Модуль 1 – Тема 12

Системы счисления и форматы представления числовых данных

12.1 Позиционные системы счисления

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

Различают два типа систем счисления:

  • непозиционные – содержат неограниченное количество символов (цифр), значение, выражаемое конкретной цифрой, не зависит от ее положения в числе;
  • позиционные – содержат ограниченное количество символов (цифр) – т.н. алфавит системы счисления; значение, выражаемое конкретной цифрой, определяется ее позицией в числе.

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

Параметры системы счисления:

– основание системы счисления;

– набор допустимых символов или цифр
(алфавит системы счисления).

Значение некоторого числа X, записанного в системе счисления с основанием , определяется по формуле

, (12.1)

где n – количество цифр в записи целой части числа;

k – количество цифр в записи дробной части числа;

i – номер позиции цифры в числе (положительные значения i используют
для целой части, отрицательные – для дробной)

Например, значение записи числа в общепринятой десятичной системе будет выражаться следующим образом в соответствии с формулой (12.1):

В этом примере n=4 и k=3.

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

Таблица 12.1 – Характеристики основных позиционных систем счисления

Название
системы

Набор
допустимых цифр

Пример
обозначения
в языке ассемблер

Пример
обозначения
в языке С

Двоичная

2

0, 1

Индекс B или b:

01101110B

0b01101110

Десятичная

10

0, 1, 2, 3, 4,

5, 6, 7, 8, 9

D или без индекса:

139 или 139D

Без индекса:
139

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

16

0, 1, 2, 3, 4,

5, 6, 7, 8, 9,

A, B, C, D, E, F

Индекс H или h:

123H, 0A8h, 81Bh

0x123

0x0A8 или 0xA8

0x81B

Для описания информации, которая обрабатывается цифровой техникой, используется двоичная система счисления, так как цифровые сигналы могут принимать только два фиксированных уровня значений напряжения – «низкий» и «высокий», которые условно кодируются 0 и 1.

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

Таблица 12.2 – Запись числовых значений в различных системах счисления

Десятичная
(decimal, dec)

Двоичная
(binary, bin)

Шестнадцатеричная
(hexadecimal, hex)

Двоично-десятичная
(BCD-числа)

0

1

2

3

4

5

0000

0001

0010

0011

0100

0101

0

1

2

3

4

5

0000 0000

0000 0001

0000 0010

0000 0011

0000 0100

0000 0101

6

7

8

9

10

0110

0111

1000

1001

1010

6

7

8

9

A

0000 0110

0000 0111

0000 1000

0000 1001

0001 0000

11

12

13

14

15

1011

1100

1101

1110

1111

B

C

D

E

F

0001 0001

0001 0010

0001 0011

0001 0100

0001 0101

16

17

18

1 0000

1 0001

1 0010

10

11

12

0001 0110

0001 0111

0001 1000

Двоично-десятичное представление (BCD-числа, BCD – binary coded decimal) используют для представления данных, выводимых на цифровые индикаторы. Выполнение вычислений над такими числами затруднительно и требует постоянной коррекции результата.

12.2 Понятие кода и формата представления информации

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

Код – это принцип взаимосвязи естественного значения числа с его двоичным представлением.

Формат данных (тип данных) – определяет особенности внутримашинного представления числа (знак, мантисса, порядок). Отдельные разряды двоичного числа объединяют в функциональные группы, называемые полями. Таким образом, формат – это шаблон, накладываемый на некоторый двоичный код. Он служит для интерпретации двоичных чисел, хранящихся в памяти вычислителя. Атрибутами формата (типа данных) являются: общее количество разрядов для представления числа, назначение и размер полей, диапазон допустимых значений.

Общепринятые единицы измерения объема информации в вычислителе: бит – один двоичный разряд; байт – восемь двоичных разрядов; слово – два байта; килобайт – 1024 байта (обозначение: байт); мегабайт – 1048576 байт (обозначение: байт).

Прямой код – это запись значения числа в двоичной системе счисления.

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

12.3 Форматы с фиксированной точкой (ФТ)

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

Категории данных для форматов ФТ:

– числа без знака; все разряды формата служат для представления значения;

– числа со знаком; один разряд (старший) служит для представления знака числа, остальные – для значения (мантиссы), представленной в дополнительном коде, если значение числа отрицательное.

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

1) записать прямой код модуля числа в требуемой разрядности, в бит знака
поставить “1” (что означает “-“);

2) проинвертировать все разряды числа, кроме разряда знака;

3) к полученному числу прибавить “1” (с учетом всех межбитовых переносов).

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

Компиляторы языков программирования автоматически выполняют представление заданных отрицательных целых чисел в дополнительном коде для хранения в памяти.

Типовые структуры форматов с ФТ показаны на рис.12.1, а характеристики этих форматов даны в табл. 12.3.

Рисунок 12.1 – Типовая структура форматов с фиксированной точкой (ФТ)

В структуре целочисленных форматов различают два поля – для хранения мантиссы, т.е. значения числа (разрядность поля обозначим как nm) и поле для хранения знака числа: минус кодируется “1”, плюс – “0” (разрядность поля обозначим как ns).

Таблица 12.3 – Характеристика целочисленных форматов (ФТ)

Параметры формата

Диапазон значений (dec/hex)

Однобайтовое
без знака
(байт без знака)
n = nm = 8

Двухбайтовое
без знака
(слово без знака)
n = nm = 16

Однобайтовое
со знаком
(байт со знаком)
n = 8, ns=1, nm=7

Двухбайтовое
со знаком
(слово со знаком)
n = 16, ns=1, nm=15

Например, десятичное значение Х = -5 будет выглядеть в формате “байт со знаком” в виде FBh:

1) прямой код модуля ; в бит знака ставим “1” – получим 10000101b; 2) инверсия всех разрядов, кроме знака – 11111010b;

3) прибавляем “1” – получим 11111011b = FBh

Преимущества использования дополнительного кода для представления отрицательных целых чисел в следующем:

– и для положительных и для отрицательных значений соблюдается правило – большему значению соответствует больший код;

– сложение и вычитание можно выполнять целиком над форматом, т.е. складывать разряды мантиссы и знака без отдельной обработки;

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

Например, в формате “байт со знаком” X1 = -5 = 11111011b, X2 = 7 = 00000111b.

Результат суммирования:

Y = X1 + X2 = (-5) + 7 = 2 = 00000010b – положительное число, прямой код.

Следующий пример: X1 = -8 = 11111000b, X2 = 5 = 00000101b.

Результат суммирования:

Y = X1 + X2 = (-8) + 5 = -3 = 11111101b – отрицательное число,
дополнительный код.

12.4 Форматы с плавающей точкой (ПТ)

Особенность форматов с плавающей (float) точкой состоит в том, что часть разрядов числа ( k разрядов ) выделяется под размещение дробной части мантиссы, нормализованной в диапазон от [1..2[, а оставшаяся часть (n-k-1) разрядов – под показатель степени двойки масштабного коэффициента числа, именуемый порядком (см. рис. 12.2).

Рисунок 12.2 – Типовая структура формата ПТ

Значение числа Х связанно со значениями (содержимым) полей формата следующим соотношением:

. (12.1)

Мантисса числа должна быть получена в т.н. нормализованном виде, т.е. лежать в диапазоне , и в формате задается в прямом коде независимо от знака числа (“2” взята как основание двоичной системы, которая используется для представления данных в вычислителе).

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

Таким образом, для хранения чисел в формате ПТ используют три поля: знак числа, дробная часть мантиссы, показатель порядка. Естественное значение числа можно получить на основании значений полей согласно формуле (12.1).

Для формата ПТ поля имеют следующую разрядность:

; ; . Поле для знака порядка не выделяется, т.к. во внутримашинном представлении порядок является положительным числом. Так, для форматов real (Pascal) и float (C) разрядность полей составляет:

для real: ; ; ; ; ;

для float: ; ; ; ; .

Достоинства форматов ПТ – широкий диапазон и малая погрешность представления чисел, которая слабо зависит от значения числа.

Для записи значения числа, например, Х=28, в формате ПТ с параметрами , , , , нужно:

  1. получить нормализованную запись числа ;
  2. дробную часть мантиссы представить в двоичном прямом коде с разрядностью : 0.75=0.110 0000 0000 0000 b (подчеркнуты 15 разрядов поля f );
  3. слева от точки вместо “0” целой части поставить знак числа; в данном случае для положительного значения это будет “0”;
  4. рассчитать смещенный порядок ;
  5. сформировать полную двоичную (или HEX) запись значения числа в формате ПТ (разделительная точка и “1” целой части нормализованной мантиссы в формате не хранятся):

0110 0000 0000 0000 10000011 = 60h 00h 83h

Проверьте самостоятельно, что значение в этом формате будет иметь вид: 1101 0111 0000 1010 01111110 = D7h 0Ah 7Ch .

Автор конспекта доцент каф. 301 Джулгаков В.Г.

Системы счисления и форматы представления числовых данных