Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

ФАКУЛЬТАТИВ Системы счисления.





Система счисления (СС)– совокупность приёмов и правил для изображения чисел с помощью символов, имеющих определённые количественные значения. В любой системе счисления выделяют некоторые числа, которые называют узловыми; другие числа – алгоритмические, получаются в результате выполнения каких-либо операций над узловыми. Например, в римской системе счисления узловыми являются числа I(1), V(5), X(10), L(50), C(100), D(500), M(1000). Алгоритмическими числами являются, например, числа II, III, IV, VI, VII, VIII, IX, LX(60) , CXXI(121). Если в римской СС меньшее узловое число стоит слева от другого узлового числа, то оно вычитается, а если справа – то прибавляется к соседнему. Например, XII = 10+2; XIX= X + IX = 10+9; XL = 50 - 10 = 40 и т.д. Существуют алфавитные СС, в которых для записи чисел используются буквы. Например, в церковно-славянском языке для записи чисел используются буквы: А(1), В(2), Г(3), Д(4), Е(5), S(6), I (10), К(20). Тогда, например, IД = 14, КЕ = 25.

Системы счисления делятся на позиционные и непозиционные. В непозиционных системах счисления количественное значение каждой цифры не зависит от её позиции в записи числа. Непозиционные СС возникли раньше позиционных систем. Римская СС является

непозиционной: например, в записи чисел XV и VII значение символа V (5) не зависит от его позиции в записи чисел.

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

К числу таких систем относится современная десятичная система счисления, возникновение которой связано со счётом на пальцах. В средневековой Европе она появилась благодаря итальянским купцам, которые в свою очередь заимствовали её у мусульман. «Позиционность» десятичной системы поясним на примере. В записи числа 525.351 цифра 5 встречается три раза, и её значение зависит от позиции в записи. Первая позиция слева - это количество сотен (500), третья слева - это количество единиц (5), а вторая после десятичной точки - это количество сотых долей (5/100) или (5*10-2). Любая позиционная СС характеризуется своим основанием – количеством знаков, используемых для изображения чисел.



Для нас привычной является десятичная система счисления с основанием 10. В ней для записи чисел используются десять различных цифр: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}. Основание позиционной СС не обязательно равно 10, а может быть любым натуральным числом большим 1. Например, если СС имеет основание 3, то используются три цифры {0,1, 2}, а числа могут записываться в виде 2113, 102.213 – нижний индекс указывает на основание СС, в которой сделана запись числа. Далее будем обозначать 2-ую, 8-ую и 16-ую СС как Bin, Oct и Hex соответственно.

Десятичную систему счисления обозначим как Dec.

Приведём общее правило для изображения чисел в позиционной системе счисления. Пусть задано основание системы счисления – натуральное число B >1. Задан алфавит (цифры) системы счисления, содержащий В символов. Пусть M ={A1, A2, …, AB} - алфавит системы счисления; а Rk – знаки алфавита M, k = -n, -n +1, …. 0, 1, 2, … m, где m, n - неотрицательные целые числа. Здесь индекс k указывает на позицию в

записи числа, в которой стоит знак Rk .

Позиционной записью числа Х в системе счисления с основанием В называется его представление в виде:

 

Х = Rm Rm-1 Rm-2… R1 R0 • R -1 R -2 … R-n (9.1)

 

В формуле (9.1) символ «•» - разделитель целой и дробной части числа X; обычно это точка « . » или запятая « , ». Номер позиции цифры в записи числа определяется относительно разделителя: влево или вправо. Отсчёт влево идёт с нуля. В формуле (9.1) R4 означает, что эта цифра находится на 5-ой позиции, если считать от разделителя влево (5, а не 4, так как отсчёт идет с нуля); R-3 означает, что эта цифра стоит на третьей позиции, если считать от разделителя вправо.

Запись (9.1) означает, что число X равно:

X= Rm*Bm + Rm-1*Bm-1 + Rm-2*Bm-2 +… R1*B1 +R0* B0+R –1*B-1 +R-2*B-2

+… R –n * B-n, где B0=1; Bm = B*B*…..B, т.е. В умножаем на себя m - раз; B-n = 1/Bn.

Более компактная запись формулы (9.1) :

m

X = ∑Rk Bk . (9.2) k=−n

Например, для «обычной» десятичной системы счисления с

основанием В=10 и М={0,1,2,3,4,5,6,7,8,9}, запись (9.1) для X= 3269.721 означает, что Х=3*103 + 2*102 + 6*101 + 9*100 + 7*10-1 + 2*10-2 + 1*10-3.

Основание позиционной СС – это количество единиц младшего разряда, переходящее в единицу старшего соседнего разряда. Используя это правило, выпишем первые 16 натуральных чисел в двоичной системе счисления (Bin) , используя «таблицу сложения» 1+0 = 1; 1+1 = 10:

 

0+1 = 1 100+1 =101 1000+1=1001 1100+1=1101
1+1 = 10 101 +1 =110 1001+1=1010 1101+1=1110
10+1 = 11 110 +1 = 111 1010+1=1011 1110+1=1111
11+1 = 100 111+1 =1000 1011+1=1100 1111+1= 10000

 

В 8-ой СС (Oct) используются первые восемь цифр десятичной системы {0, 1, 2, 3, 4, 5, 6, 7}. Выполняются соотношения

7+1=10 13+1=14
10+1=11 14+1=15
11+1=12 15+1=16
12+1=13 16+1=17
    17+1=20

 

В Hex используются десять цифр 0, 1, … 9, а недостающие цифры изображают с помощью букв A, B, C, D, E, F: A= 9+1, B=A+1, C=B+1,

D=C+1, E=D+1, F=E+1, F+1=1016.

В сводной таблице 1 представлены натуральные числа от 1 до 16 в 2- ой , 8-ой и 16-ой системах счисления. Обратите внимание на то, что в таблице для записи двоичного представления чисел всегда используются 4 бита, хотя для записи чисел от 1 до 7 достаточно 1, 2 или 3 бит. Такое 4-х битовое представление нам понадобится в дальнейшем при переводе чисел из Bin в Hex, и наоборот.

Таблица 1.

Dec Bin Oct Hex
A
B
C
D
E
F

 

Пример 1. Приведём пример позиционной записи (1) для чисел в Bin.

Рассмотрим двоичное число:

11100101.101

Это дробное число; для его перевода в Dec надо использовать формулу (9.2):

27 + 26 + 25 + 22 + 20 + 1/2 + 1/23 =

128 + 64 + 32 + 4 + 1 + 0.5 +0.125 = 229. 625.

Таким образом, формула (2) даёт способ перевода чисел из Bin в Dec.

Пример 2. Перевести из Bin в Dec число 101.011. Запишем данное число в виде (9.2):

101.011 = 1*22 + 0*21 + 1*20 +0*2-1 + 1*2-2 + 1*2-3=4+0+1+1/2 +1/4=4.75 Алгоритм перевод чисел из Dec в Bin поясним на примерах.

Пример 2. Перевести из Dec в Bin число 42.73 Отдельно переведем целую и дробную части числа.

a) Для перевода целой части (= 42) проводим ряд последовательных делений десятичного числа 42 на 2. При каждом таком делении находим частное (r) и остаток (q). На каждом шаге полученное частное вновь делим на 2 и т.д. Процесс останавливается, когда при очередном делении частное будет равно 0.

42 : 2 = 21 (0) r = 21, q = 0

21 : 2 = 10 (1) r = 10, q = 1

10 : 2 = 5 (0) r = 5, q = 0

5 : 2 = 2 (1) r = 2, q = 1 2 : 2 = 1 (0) r = 1, q = 0

1 : 2 = 0 (1) r = 0, q = 1 (Stop)

Полученные остатки q выписываем, начиная с самого последнего и до первого. Это и будет двоичный код числа 42: 4210 =1010102 .

b) Для перевода дробной части 0.73 заданного десятичного числа в Bin проводим ряд последовательных умножений на 2. В полученном произведении на каждом шаге отделяем целую часть (r) от дробной (q). Дробную часть вновь умножаем на 2 и т.д. Процесс заканчивается, если на очередном шаге дробная часть будет равна нулю. Здесь возможны случаи, при которых очередная дробная часть q уже встречалась на предыдущих шагах процесса, то есть мы получим периодическую двоичную дробь. Если такой момент не наступает, мы имеем дело с бесконечной двоичной дробью. Выписываем полученные целые части r в порядке их появления от первой до последней - это и будет искомая двоичная дробь.

0. 73 * 2 = 1. (46 ) r =1, q= 0.46

0. 46 * 2 = 0. (92 ) r =0, q= 0.92

0. 92 * 2 = 1. (84 ) r =1, q= 0.84

0. 84 * 2 = 1. (68 ) r =1, q= 0.68

0. 68 * 2 = 1. (36 ) r =1, q= 0.36

и т.д. Мы прервали перевод дроби 0.73 и получили её приближенное представление в виде дроби системы Bin: 0. 73 º 0.10111… Окончательно получаем: 42.73 º 101010.10111… Пример 2.

Записать в Bin десятичное число 0.15 (в виде двоичной дроби).

0.15 * 2 = 0. (3) r = 0, q = 0.3

0.3 * 2 = 0. (6) r = 0, q = 0.6

0.6 * 2 = 1. (2) r = 1, q = 0.2

0.2 * 2 = 0. (4) r = 0, q = 0.4

0.4 * 2 = 0. (8) r = 0, q = 0.8

0.8 * 2 = 1. (6) r = 1, q = 0.6

0.6 * 2 = 1. (2) r = 1, q = 0.2 – повторение: см. строку 3.

Получили представление числа 0.15 в виде двоичной периодической

дроби:

0.15 = 0.00100110011001…= 0.00(1001).

Пример 3. Если знаменатель дроби является степенью двойки, то можно использовать следующий приём для перевода дроби из Dec в Bin.

Покажем, как можно записать в двоичной системе дроби 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

Техника перевода чисел из Hex в Dec такая же, как и в случае перевода из Bin в Dec.

Пример 4. Задано дробное число 3FA.B5 в Hex. Записать это число в

Dec. Используем формулу (9.2):

3FA.B5 = 3*162 +F*161 +A*160 + B*16-1 + 5*16-2

= 3*256 + 15*16 +10 + 11/16 +5/256

=768+240+10+(11*16+5)/256=1018 +181/256 º1018.70703125… Пример 5. Перевести десятичное число 332 в Hex.

Как и при переводе из Dec в Bin делим заданное целое на 16 и при каждом таком делении находим частное (r) и остаток (q). Полученное частное вновь делим на 2 и т.д. Если остаток 10§ q § 15, то заменяем его на соответствующие буквенные изображения цифр Hex, см таблицу 1.

Затем выписываем остатки по порядку «снизу – вверх»:

332 : 16 = 20 (12), 12 это С16

20 : 16 = 1 (4)

1 : 16 = 0 (1)(Stop)

33210 = 14С16 .

Дробные числа из Dec переводятся в Hex, как и в случае перевода из

Dec в Bin. Например, переведём дробь 0.13 в Hex:

0.13*16 = (2). 08

0.08*16 = (1). 28

0.28*16 = (4). 48

0.48*16 = (7). 68

0.68*16 = (A). 88, A16=10

0.88*16 = (E). 08, E = 14, остаток 08 уже встречался, см. 2 строку.

Т.е. при переводе числа 0.13 в Hex мы получили периодическую дробь: 0.13 = 0.2147AE147AE… = 0.2(147AE)16 .

При переводе дробей, знаменатель которых является степенью 16, можно использовать более простой способ. Например, переведём дробь

11/16 в Hex: 11=B16, 16=1016 ; тогда (11/16) = (B/10)16 = 0.B ; переведём дробь 167/256 в Hex: 167 = A716; 256 = 10016 ; значит (167/256) = (A7/100) =

0.A7.

Для перевода чисел из Bin в Hex применяется следующий приём: двоичную запись числа надо разбить на группы цифр по 4 (на тетрады), начиная от разделителя влево и вправо (если число дробное). Самую левую и самую правую тетрады дополняем, если надо, нулями. Каждую двоичную тетраду нужно заменить на соответствующую цифру в Hex, используя таблицу 1. Пример:

111011001.110111 = 1 1101 1001 . 1101 11 =

0001 1101 1001 . 1101 1100 = 1D9. DC .

Перевод из Hex в Bin осуществляется ещё проще: каждую цифру числа, записанного в Hex, нужно заменить на соответствующую тетраду из таблицы 1. Например, A7C.2F = 1010 0111 1100. 0010 1111;

Значение систем Bin и Hex для информатики определяется тем, что все данные и программы представлены в компьютере в двоичной системе. Для большей «читабельности» двоичных кодов их выводят на экран в Hex; адреса памяти записываются в Hex; дампы памяти представляют в Hex.

Для записи чисел в компьютере используются два основных способа:





Рекомендуемые страницы:

Воспользуйтесь поиском по сайту:



©2015- 2021 megalektsii.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.