Загрузил Геоцог Михаил

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

Представление чисел в
компьютере
•
•
•
•
•
Позиционные и непозиционные СС
Приемы перевода чисел из одной СС в другую
Числа с фиксированной точкой
Числа с плавающей точкой
Особенности представления вещественных чисел в ЭВМ
Система счисления (СС) – совокупность приёмов и
правил для изображения чисел с помощью символов,
имеющих определённые количественные значения.
однородные
смешанные
В римской СС узловыми являются числа:
алгоритмические числа
В церковнославянском языке
для записи чисел
использовались буквы:
Числа от 11 до 19:
на первом месте – буква, обозначающая единицы, а на втором буква і,
имеющая цифровое значение «десять», например:
а҃і =11
в҃і = 12
г҃і =13
Числа от 21 и далее: сначала пишется буква, обозначающая десятки, потом
буква, обозначающая единицы, например:
к҃з = 27
н҃г = 53
ѻ҃а = 71
КЕ = 25
Тысячи обозначаются знаком ҂, который может присоединяться к любой букве,
ниже уровня строки, например:
҂в҃ = 2.000
҂ѳ҃ = 9.000 ҂ѯ҃ = 60.000
҂ф҃ = 500.000
Позиционная система
• Примеры:
535.15
3433.537
• Основание СС = количество цифр СС
• Основание СС - количество единиц
младшего разряда, которое равно одной
единице соседнего старшего разряда
• 2сс обозначается Bin
• 8сс обозначается Oct
• 16сс обозначается Hex
5
Примеры чисел в 3сс:
• Троичная система счисления: основание = 3
• используются три цифры {0,1, 2}
• Примеры чисел: 2113
102.213
• В троичной системе
1+2=10 (три в десятичной)
10+1=11
11+1=12
12+1=20 (в десятичной 5+1 = 6)
6
Однородная СС — для всех разрядов (позиций) числа
набор допустимых символов (цифр) одинаков (н-р 10сс).
Смешанная позиционная
система счисления
— в каждом разряде (позиции) числа набор
допустимых символов (цифр) может
отличаться от наборов других разрядов.
Яркий пример — система измерения времени:
• в разряде секунд и минут возможно 60 различных
символов (от «00» до «59»),
• в разряде часов – 24 разных символа (от «00» до
«23»),
• в разряде суток – 365 и т. д.
Общее правило для изображения чисел
в позиционной системе счисления
• Задано основание системы счисления – натуральное B >1
• Заданы цифры (алфавит) системы счисления M ={A1, A2, …, AB}
Позицонная запись числа Х:
или
где
для всех k от –n до m
8
Пример:
Для десятичной системы счисления с основанием В=10
и М={0,1,2,3,4,5,6,7,8,9}, запись
для X= 3269.721 означает, что
9
Первые 16 натуральных чисел в 2сс:
Основание позиционной СС – это количество единиц
младшего разряда, переходящее в единицу старшего
соседнего разряда.
10
Восьмеричная сс:
8 сс
7+1=10
10+1=11
11+1=12
12+1=13
Dec
8
9
10
11
8 cc
13+1=14
14+1=15
15+1=16
16+1=17
17+1=20
Dec
12
13
14
15
16
11
16 сс:
• В 16сс используются 16 цифр
• первые десять – это 0, 1, 2,… 9,
• недостающие цифры изображают с
помощью букв A, B, C, D, E, F:
• A= 9+1 (10), B=A+1 (11) , C=B+1 (12),
• D=C+1 (13), E=D+1 (14), F=E+1 (15),
• F+1=1016.
12
Сводная таблица (первые 16 натуральных)
10 сс
2 сс
8 сс
16 сс
0
0000
00
0
1
0001
01
1
2
0010
02
2
3
0011
03
3
4
0100
04
4
5
0101
05
5
6
0110
06
6
7
0111
07
7
8
1000
10
8
9
1001
11
9
10
1010
12
A
11
1011
13
B
12
1100
14
C
13
1101
15
D
14
1110
16
E
15
1111
17
F
13
Перевод из 2сс  10сс
7
6
5 4 3 2 1 0
-1 -2 -3
Пример 1: 1 1 1 0 0 1 0 1 .1 0 1 =
 1* 2 7  1* 2 6  1* 2 5  0 * 2 4  0 * 2 3  1* 2 2  0 * 21  1* 2 0 
 1* 2 1  0 * 2 2  1* 2 3 
 128  64
1
1
5
 32 + 4 + 1 +
+  229
2
8
8
14
Перевод из 10сс в 2сс числа 58.73
Переводим целую часть:
r – частное; q - остаток
• 58 : 2 = 29 (0)
• 29 : 2 = 14 (1)
• 14 : 2 = 7 (0)
• 7 : 2 = 3 (1)
• 3: 2 = 1 (1)
• 1 : 2 = 0 (1)
58 = 1110102
r = 29, q = 0
r = 14, q = 1
r = 7, q = 0
r = 3, q = 1
r = 1, q = 1
r = 0, q = 1 (Stop)
15
Переводим дробную часть числа
58.73
r – целая часть; q – дробная часть
• 0. 73 * 2 = 1. (46 )
• 0. 46 * 2 = 0. (92 )
• 0. 92 * 2 = 1. (84 )
• 0. 84 * 2 = 1. (68 )
• 0. 68 * 2 = 1. (36 )
• и так далее
• 0.73 ≈ 0.10111…
r =1, q= 0.46
r =0, q= 0.92
r =1, q= 0.84
r =1, q= 0.68
r =1, q= 0.36
Ответ: 58.73 = 111010.10111…2
16
Пример 2:
17
Если знаменатель дроби является
степенью основания СС
Пример 3:
Записать в двоичной системе дроби 3/4, 5/8, 13/16:
• 3 = 112,
4 = 1002
 3/4 = (11/100)2 = 0.11
• 5 = 1012,
8 =10002
 5/8 = (101/1000)2 = 0.101
• 13 = 11012, 16 = 100002  13/16 = (1101/10000)2 =
0.1101
18
Техника перевода чисел из Hex в Dec
такая же, как и в случае перевода
из Bin в Dec.
Пример 5. Перевести десятичное число
332 в Hex.
Переведём дробь 0.13 в Hex:
Примеры перевода из 10сс в 16сс
Для перевода чисел из 2сс в 16сс
применяется следующий приём:
1. Двоичную запись числа надо разбить на группы
цифр по 4 (на тетрады), начиная от разделителя
влево и вправо (если число дробное).
2. Левую и правую тетрады дополняем, если надо,
нулями.
3. Каждую двоичную тетраду нужно заменить на
соответствующую цифру в 16сс, используя
таблицу.
111011001.110111 = 1 1101 1001 . 1101 11 =
= 0001 1101 1001 . 1101 1100 =
=
1
D
9
. D
C
23
Пример: из 2сс в 16сс:
111011001.110111 = 1 1101 1001 . 1101 11 =
= 0001 1101 1001 . 1101 1100 =
=
1
D
9
. D
C
24
Перевод из 16сс в 2сс:
каждую цифру числа, записанного в 16сс,
нужно заменить на соответствующую
двоичную тетраду из таблицы:
A7C.2F = 1010 0111 1100. 0010 1111
A
7
C
2
F
25
2сс  8cc и наоборот:
1) Разбиваем двоичную запись на
триады;
2) каждую триаду заменяем на
восьмеричную цифру:
11101 = 011 101 = 358
Из 8сс в 2сс:
428 = 100 010
26
Числа с фиксированной точкой
Систему с фиксированной запятой обозначают как P( b, t, f),
где b – основание системы счисления,
t – количество разрядов для записи числа,
f - количество разрядов для записи дробной части.
Пример: Р(10, 4, 1)
• Dec
• общее количество разрядов для записи числа равно 4
• под дробную часть отводится 1 знак
min = -999.9
max = 999.9
27
Числа с фиксированной точкой
Пример: Р(10, 4, 1)
• Dec
• общее количество разрядов числа равно 4
• под дробную часть отводится 1 знак
• min = -999.9
max = 999.9
• всего положительных чисел с нулём 10000
• всего отрицательных чисел 9 999
• Любое число из [ -1000; 1000] представимо в
системе Р(10, 4, 1) с ошибкой <= 0.05
28
Числа с фиксированной точкой
• Система с фиксированной запятой P( b, t, f )
используется в современных ЭВМ только
для записи целых чисел (со знаком и без
знака) в двоичной системе
• то есть при b = 2, f = 0
• t может равняться 8, 16, 32
30
Целые числа без знака
• целые без знака в системе Р( 2, 8, 0):
• биты нумеруются справа налево, начиная с нуля:
7 6 5 4 3 2 1 0
10100110=
1* 27  0 * 26  1* 25  0 * 2 4  0 * 23  1* 2 2  1* 21  0 * 2 0 
 128  32  4  2  166
31
Целые числа со знаком
Числа с фиксированной точкой
Целые co знаком
• старший бит хранит знак: 0 для «+»; 1 для «-»
• для записи отрицательных чисел используется
дополнительный код
Правило получения дополнительного кода
отрицательного числа (-N) :
1) записываем двоичный код числа (+N) и дополняем его слева
до нужного числа битов (8, 16, 32)
2) делаем инверсию полученного кода (замену всех 0 на 1 и всех
1 на 0)
3) прибавляем 1 к младшему разряду
Полученный код и будет дополнительным кодом отрицательного
числа (-N).
33
Примеры целых со знаком
• Записать дополнительный 8 битовый код
числа -95.
1) 95 в двоичном коде: 95 = 64+16+8 +4+2+1 = 101 1111
2) Дополним этот код слева нулём до 8 бит: 0101 1111
3) Сделаем инверсию:
1010 0000
4) Прибавим 1 к младшему разряду
1010 0001
- это и будет дополнительный двоичный код
отрицательного числа -95
5) Проверим:
34
8 –ми битовые со знаком
• Максимальное положительное
0111 1111 = +127.
• 1000 0001 = -127.
• Минимальное отрицательное
1000 0000 = -128.
• Диапазон однобайтовых целых со знаком
от -128 до +127.
• Всего с помощью 8-ми бит можно представить
256 чисел, т.е. 28.
35
Правило получения целого
десятичного числа со знаком
из дополнительного кода
Целые типы данных в Pascal
Теорема:
Максимальное целое (без знака), которое
можно записать с помощью n бит равно 2n -1.
Доказательство:
x  111.......1
x  1  1000.......0  2
x= 2n -1. n раз
n
n раз
40
Как интерпретировать данные?
Например: 1001 1101
Если это число типа Byte, то оно равно
27+24+23+22+20= 128+16+8+4+1=157.
Если это целое число со знаком типа ShortInt,
то для его определения надо инвертировать код:
0110 0010, затем прибавить 1: получим 0110 0011,
т.е. 26+25+21+20= 64+32+2+1 = 99,
значит, данный байт содержит число - 99.
Как интерпретировать данные?
Например: 1001 1101
Если это число типа Byte, то оно равно
27+24+23+22+20= 128+16+8+4+1=157.
Если это целое число со знаком типа ShortInt,
то для его определения надо инвертировать код:
0110 0010, затем прибавить 1: получим 0110 0011,
т.е. 26+25+21+20= 64+32+2+1 = 99,
значит, данный байт содержит число - 99.
Для правильной интерпретации содержимого памяти
нужно знать, какой тип данных в ней храниться, т.к. по
«внешнему виду» отличить один тип от другого нельзя.
Примеры (8 битовые)
1)Целые без знака:
0110 1010
0100 1001
1011 0011
(106)
(73)
(179)
2)Оба положительные:
0110 1010 (106)
0100 1001 (73)
1011 0011
(-77)
Ошибка!(был перенос в знаковый бит)
43
Примеры (8 битовые)
3)Оба отрицательные:
1101 0110
(-42)
1100 0101
(-59)
1 1001 1011
(-101)верно
был перенос и переполнение.
4)Разных знаков:
0110 1010 (106)
1100 1001 (-55)
1 0011 0011
(51)
Верно! ( был перенос и перепол.)
44
Индикаторы переноса и переполнения
(признаки правильного результата)
операнды
индикатор
переноса
(из знак. бита)
индикатор
переполнения
(пер. в знак. бит)
оба без знака
нет
есть или нет
+ и +
нет
- и -
есть
есть
+ и -
есть
есть
45
Экспоненциальная запись числа — это
представление действительных чисел в виде
мантиссы и порядка.
Удобна для представления очень больших и
очень малых чисел, а также для унификации
их написания.
Система представления чисел
с плавающей точкой F(b, t, L, U)
b – основание системы, t – количество разрядов мантиссы,
L , U – пределы изменений значений показателей порядка чисел в этой системе.
Числа имеют экспоненциальный вид: x = ≤ M * bk ,
где M – мантисса числа x,
b – основание системы счисления,
k – порядок числа x.
31562.781 = 0.31562781*105
порядок
мантисса числа
характеристика числа (экспонента,
т.е. основание, возведенное в степень)
Число с плавающей точкой
b – основание системы, t – количество разрядов мантиссы,
L , U – пределы изменений значений показателей порядка чисел в этой системе.
b – основание системы, t – количество разрядов мантиссы,
L , U – пределы изменений значений показателей порядка чисел в этой системе.
b – основание системы, t – количество разрядов мантиссы,
L , U – пределы изменений значений показателей порядка чисел в этой системе.
• Нормальной формой числа называется такая форма, в
которой мантисса (без учёта знака) находится на
полуинтервале [0,1), то есть 0<= M < 1.
• Такая форма записи имеет недостаток: некоторые числа
записываются неоднозначно .
• Например, 0,0001 можно записать как 0,000001*10²,
0,00001⋅10¹,
0,0001⋅10º, 0,001⋅10ˉ¹ …..
• Потому распространена другая форма записи —
нормализованная, в которой мантисса десятичного числа
принимает значения от 1 (включительно) до 10 (исключая), то
есть 1<= M < 10 .
• Мантисса двоичного числа принимает значения от 1 до 2.
Пример 1. Запишем десятичное число 1 015 000 в экспоненциальном
нормализованном виде.
• Основание будет 10.
• Выделим мантиссу. Для этого представим число в виде дроби, дробная
часть которой будет равна, соответственно, нулю (так как число целое):
1000000.0.
Если целая часть числа больше 0, то двигаем точку влево от ее начального
положения (внутрь целой части) до тех пор, пока в целой части не останется
одна-единственная цифра. После нее ставим точку. Отбрасываем незначимые
нули (на конце числа). Получаем мантиссу числа, равную 1.015.
• Определим степень (порядок) основания числа. На сколько позиций влево
сдвинулась наша разделяющая целую и дробную части точка? На шесть
позиций. Значит, порядок будет равен 6. При этом порядок положительный
( двигали точку в целой части числа, не равной 0).
Итоговая запись в нормализованном виде: 1.015 * 10⁶.
Мы можем записать это число и в таком варианте: 1.015 Е6 (где Е6 - это
экспонента десятичного числа, то есть 10 в 6 степени).
Структура представления вещественных чисел в
ЭВМ имеет следующий вид
Например
Так как в нормализованной мантиссе двоичного числа в
первой позиции всегда стоит единица, то хранят мантиссу,
начиная со второго знака, например:
Хранение двоичного числа с плавающей точкой
Например, в языке TurboPascal
существуют следующие типы данных
для хранения вещественных чисел
Теория действительных (вещественных) чисел была создана во
второй половине XIX века в работах К. Вейерштрасса, Э. Гейне, Р.
Дедекинда, Г. Кантора, Ш. Мере.
Действительные (вещественные) числа R — это все
числа, которые можно представить на числовой прямой.
К ним относятся:
1. Натуральные числа (N) — которые используются во время
порядкового счёта: 1, 2, 3, 4, 5, ….
2. Целые числа (Z) — все натуральные числа, отрицательные
числа и ноль: … −3, −2, −1, 0, 1, 2, 3, 4, 5, ….
3. Рациональные числа (Q) — дроби, которые можно записать
как отношения двух целых чисел: ½; 0,5; −0,3333; -20/5 …
4. Иррациональные числа (I) — это числа с бесконечным не
повторяющимся значением после запятой — например, числа
π, √2, е,
…..
Выводы:
1. Множество действительных чисел значительно отличается от
множества рациональных чисел, с которыми мы имеем дело в
ЭВМ.
2. Числовая система ЭВМ является конечной и цикличной.
3. Для чисел, представленных в ЭВМ, можно указать наибольшее по
модулю число А, такое, что все остальные числа будут меньше А.
4. Неточный перевод действительных чисел в двоичную систему и
конечность разрядов, выделяемых для хранения чисел, служат
источниками
систематических
ошибок
при
реализации
вычислительных методов на ЭВМ.
5. Требуется теория «машинных» действительных чисел.
6. Для хранения отрицательных чисел используют дополнительный и
обратный коды, которые упрощают работу процессора.
7. Обработка числовой информации в процессоре зависит от длины
машинного слова, при этом старший бит машинного слова является
знаковым.