- •Т.В. Сарапулова, и.Е. Трофимов позиционные системы счисления
- •Введение
- •1. Позиционные системы счисления
- •1.1. Основные положения
- •1.2. Классификация позиционных систем счисления
- •1.3. Преобразование чисел
- •1.4. Арифметические операции
- •1.5. Запись чисел в позиционных системах счисления
- •2. Представление данных в памяти эвм
- •2.1. Основные положения
- •2.2. Прямой код
- •2.3. Обратный код
- •2.4. Дополнительный код
- •2.5. Сложение чисел в обратном и дополнительном кодах
- •2.6. Модифицированные обратный и дополнительный коды
- •3. Задание для выполнения лабораторной работы
- •Задание к лабораторной работе
- •Варианты заданий к лабораторной работе
- •4. Рекомендуемая литература
1. Позиционные системы счисления
1.1. Основные положения
Позиционная система счисления – система счисления, в которой одна и та же цифра в записи числа несет различные значения в зависимости от того места (разряда), где она расположена. Изобретение позиционной нумерации, основанной на поместном значении цифр, приписывается шумерам и вавилонянам.Дополненная «арабскими» цифрами она добралась до Европыоколо X-го века.
Когда современный человек пишет число 2358, он имеет в виду 2 «тысячи» 3 «ста (сотни)» 5 «десят (десятков)» 8, то есть соблюдает порядок в этой записи. Всякое нарушение порядка записи искажает восприятие значения числа.
Каждая позиционная система счисления определяется некоторым числом b > 1 (т.н. основание системы счисления) таким, что b единиц в каждом разряде объединяется в одну единицу следующего по старшинству разряда. Подобные системы принято называть b-ричными.
Число
x
в b-ричной
системе счисления представляется в
виде линейной комбинации степеней числа
b:
,
где
–
это целые числа, называемые цифрами,
удовлетворяющие неравенству
,
k–
порядковый номер разряда (начиная с
нулевого), n–
число разрядов.
Каждая
степень
в такой записи называется разрядом,
старшинство разрядов и соответствующих
им цифр определяется значением показателя
k.
Обычно для ненулевого числа x
требуют, чтобы старшая цифра
в b-ричном
представлении x
была также ненулевой.
Если
не возникает разночтений (например,
когда все цифры представляются в виде
уникальных письменных знаков), число x
записывают в виде последовательности
его b-ричных
цифр, перечисляемых по убыванию
старшинства разрядов слева направо:
.
Например,
число сто
три
представляется в десятичной системе
счисления в виде:
.
1.2. Классификация позиционных систем счисления
Позиционные системы счисления принято делить на следующие три класса:
Системы с целочисленным основанием:
1– единичная (унарная) система счисления, простейшая из позиционных систем счисления;
2–двоичная (применяется в дискретной математике, информатике и программировании);
3– троичная система счисления;
8–восьмеричная (применяется в программировании);
10– десятичная система счисления;
12–двенадцатеричная (широко использовалась в древности, в некоторых областях используется и сейчас);
16–шестнадцатеричная (наиболее распространена в программировании, а также в шрифтах);
40–сорокаичная система счисления (применялась в древности ("сорок сороков = 1600"));
60–шестидесятеричная (применяется при измерении углов и, в частности, долготы и широты);
Системы с отрицательным основанием (нега-позиционные):
-2–нега-двоичная система счисления;
-10– нега-десятичная система счисления;
Системы с нецелочисленным основанием:
2,71… = e – e-ричная система счисления с основанием, равным числу Эйлера (применяется в натуральных логарифмах).
1.3. Преобразование чисел
Обычно возникает необходимость в преобразовании привычного для нас десятичного числа в систему с другим основанием и обратно – задача не слишком сложная, но иногда трудоемкая и скучная, требующая держать в памяти значения степеней для оснований:
b |
k=2 |
k=3 |
k=4 |
k=5 |
k=6 |
k=7 |
k=8 |
k=9 |
k=10 |
k=12 |
2 |
4 |
8 |
16 |
32 |
64 |
128 |
256 |
512 |
1024 |
4096 |
8 |
64 |
512 |
4096 |
32768 |
|
|
|
|
|
|
16 |
256 |
4096 |
65536 |
|
|
|
|
|
|
|
Запись
произвольного числа x
в b-ричной
позиционной системе счисления основывается
на представлении этого числа в
виде многочлена
.
При переводе чисел из десятичной системы счисления в систему с основанием b > 1 обычно используют следующий алгоритм:
1) если переводится целая часть числа, то она делится на b, после этого запоминается остаток от деления. Полученное частное вновь делится на b, остаток запоминается. Процедура продолжается до тех пор, пока частное не станет равным нулю. Остатки от деления на b выписываются в порядке, обратном их получению;
458 |
8 |
|
|
2 |
57 |
8 |
458=7128 |
|
1 |
7 |
|
2) если переводится дробная часть числа, то она умножается на b, затем целая часть запоминается и отбрасывается, вновь полученная дробная часть умножается на b и т.д. Процедура продолжается до тех пор, пока дробная часть не станет равной нулю. Целые части выписываются после двоичной запятой в порядке их получения. Результатом может быть либо конечная, либо периодическая двоичная дробь. Поэтому, когда дробь является периодической, приходится обрывать умножение на каком-либо шаге и довольствоваться приближенной записью исходного числа в системе с основанием b.
0.1 8 =0.8 8 =6.4 8 =3.2 8 =1.6 8 =4.8 ... |
0.1 16 =1.6 16 =9.6 16 =9.6 16 =9.6 ... |
0.125 2 =0.25 2 =0.5 2 =1.0 |
0.1(10)≈0.063146314…(8)
0.1(10)≈0.1999999…(16)
0.125(10)=0.001(2)
Если необходимо перевести число из двоичной системы счисления в систему счисления, основанием которой является степень двойки, достаточно объединить цифры двоичного числа в группы по столько цифр, каков показатель степени, и использовать приведенный алгоритм. Например, если перевод осуществляется в восьмеричную систему, то группы будут содержать три цифры (8 = 23). В целой части будем производить группировку справа налево, в дробной – слева направо.Если в последней группе недостает цифр, дописываем нули: в целой части – слева, в дробной – справа. Затем группы заменяется соответствующими цифрами новой системы. Соответствия приведены в таблицах.
b |
2 |
00 |
01 |
10 |
11 |
4 |
0 |
1 |
2 |
3 |
b |
2 |
000 |
001 |
010 |
011 |
100 |
101 |
110 |
111 |
8 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
b |
2 |
0000 |
0001 |
0010 |
0011 |
0100 |
0101 |
0110 |
0111 |
16 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
b |
2 |
1000 |
1001 |
1010 |
1011 |
1100 |
1101 |
1110 |
1111 |
16 |
8 |
9 |
A |
B |
C |
D |
E |
F |
Пример.Переведем из двоичной системы в шестнадцатеричную число 1111010101,11(2).
001111010101,1100(2) = 3D5,C(16)
При переводе чисел из системы счисления с основанием b в десятичную систему счисления необходимо пронумеровать разряды целой части справа налево, начиная с нулевого, и в дробной части, начиная с разряда сразу после запятой слева направо (начальный номер -1). Затем вычислить сумму произведений соответствующих значений разрядов на основание системы счисления в степени, равной номеру разряда. Это и есть представление исходного числа в десятичной системе счисления.
Примеры решения задач
Перевести данное число в десятичную систему счисления.
1000001(2)=1∙26+0∙25+0∙24+0∙23+0∙22+0∙21+1∙20 = 64+1=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) |
Замечание. Очевидно, что если в каком-либо разряде стоит ноль, то соответствующее слагаемое можно опускать.
