Российский государственный гуманитарный университет
Опубликован: 13.07.2022 | Доступ: свободный | Студентов: 343 / 38 | Длительность: 11:54:00
Специальности: Программист
Лекция 1:

Представление чисел в системах счисления

Лекция 1: 1234 || Лекция 2 >

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

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

В настоящей главе рассматриваются традиционные позиционные системы счисления с целым положительным основанием, методы преобразования представления действительного числа между десятичной и другими системами счисления, а также между системой счисления с основанием p и системой счисления с основанием, являющимся степенью p. Обсуждаются арифметические операции в системах счисления.

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

Система счисления - символический метод представления чисел с помощью письменных знаков. Эти знаки, или группы знаков, называются цифрами. Если число представляется в виде последовательности цифр, и значение цифры зависит от ее позиции, или разряда в этой последовательности, то система счисления называется позиционной. Позиционная система счисления называется p-ичной, если для представления чисел в ней используется p цифр со значениями от 0 до p - 1 включительно, а значения разрядов определяются степенями числа p. Число p называется основанием системы счисления.

Пусть p - целое число, p> 1. Неотрицательное действительное число x может быть разложено по степеням числа p следующим образом:

x=b_0p^n+b_1p^{n-1}+\dots +b_{n-1}p+b_n+b_{n+1}p^{-1}+b_{n+2}p^{-2}+\dots, ( 1)

где b_i - целые числа, 0 \le b_i < p, для i = 0, 1, 2, ...; числа b_i называются коэффициентами при степенях числа p. Запись числа x в виде

x = b_0b_1\dots b_n,b_{n + 1}b_{n + 2\dots p}

где вместо чисел b_i могут использоваться заменяющие их знаки, называется представлением числа x в p-ичной системе счисления, или p-ичным представлением, а также p-ичным числом или представлением в p-ичном виде. Если p = 10, то символ p обычно опускается. Знаки, которые используются для обозначения чисел b_i, называются цифрами.

В дальнейшем в p-ичном представлении числа, приведенном выше, будут использоваться как сами числа b_i, так и обозначающие их цифры. Различие обозначений будет ясно из контекста.

Пример 1. В двоичной системе счисления для представления чисел используются цифры 0 и 1, в троичной - 0, 1 и 2, в шестнадцатеричной - цифры 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e и f. Значения последних шести цифр соответственно равны 10, 11, 12, 13, 14 и 15.

Если дробная часть числа имеет период, то его заключают в круглые скобки, в виде

0,22321321321... = 0,22(321)

Пример 2. Число 7,8 можно представить следующим образом:

7,8 = 111,(1100)_2 = 21,(2101)_3 = 13,(30)_4 = 7,(6314)_8 = 7,(c)_{16}

Пример 3. Найдем представление числа 9,625 в двоичной системе счисления. Имеем: 9,625 = 9 + 0,625 = 8 + 1 + 0,5 + 0,125. Поэтому разложение этого числа по степеням 2 имеет вид:

9,625=1*2^3+0*2^2+0*2+1+1*2^{-1}+0*2^{-2}+1*2^{-3}

Следовательно, 9,625 = 1001,101_2.

Пример 4. Найдем десятичное представление числа 201,102_3:

2*3^2+0*3+1+1*3^{-1}+0*3^{-2}+2*3^{-3}=19\frac{11}{27}=19,(407)
Преобразование десятичных чисел в p-ичные

Пусть действительное число x имеет разложение (1). Обозначим через xint - целую часть числа x, а через xfract - дробную:

xint = [x], xfract = {x}

так что x = xint + xfract. Тогда в системе счисления с основанием p представление целой и дробной части числа x соответственно имеет вид:

x_{int} = b_0b_1\dots b_{n p}; x_{fract} = 0,b_{n + 1}b_{n + 2}..._p

Пусть a и b - целые числа и b не равно 0. Обозначим через a div b - целую часть частного, а через a mod b - остаток от деления a на b.

1. Преобразование целой части числа. Из разложения (1) следует, что целая часть числа x выглядит следующим образом:

x_{int} = b_0p^n + b_1p^{n - 1} + \dots + b_{n - 1}p + b_n.

Поэтому b_n = x_{int} \mod p. Далее, x_{int} \;\text{div}\; p = b_0p^{n - 1} + b_1p^{n - 2} + ... + b_{n - 1}, так что аналогичным образом можно найти коэффициент b_{n - 1}, и т. д.

Положим y_0 = x_{int}. Имеем:

y_0 = y_1p + b_n,\\
 y_1 = y_2p + b_{n - 1},\\
\dots\\
 y_{n - 1}= y_np + b_1, \\
 y_n = b_0, ( 2)

где y_j = y_{j - 1} \;\text{div}\; p, для j = 1, 2, \dots, n; b_i = y_{n - i} \mod p, для i = 0, 1, \dots, n. Данный способ вычисления коэффициентов b_i соответствует методу деления "уголком":


Пример 5. Представление числа 73 в троичной системе счисления можно найти следующим образом (ср. с делением "уголком"):

73 = 24 * 3 + 1;
24 = 8 * 3 + 0; 
8 = 2 * 3 + 2.

Поэтому 73 = 2201_3.

Другим способом вычисления представления целого числа x_{int} в системе счисления с основанием p является метод выделения полных степеней, в котором операции целочисленного деления применяются к максимальной степени числа p, не превосходящей x_{int}, коэффициент разложения находится как частное от деления, затем вычисления продолжаются для остатка от деления. Положим t_0 = x_{int}. Имеем:

t_0 = b_0p^n + t_1\\
t_1 = b_1p^{n - 1} + t_2,\\
\dots,\\
t_{n - 1} = b_{n - 1}p + t_n,\\
t_n = b_n,

где 0 \le t_i < p^{n - i + 1}, для i = 0, 1, \dots, n; 0 \le b_j < p, для j = 0, 1, \dots, n.

В этом методе удобно использовать таблицы степеней.

Пример 6. Найдем троичное и двоичное представления числа 173.

  1. Заметим, что 81 < 173 < 243. Имеем: 173 = 2 * 81 + 11; 11 = 9 + 2. Поэтому 173 = 2 * 3^4 + 0 * 3^3 + 1 * 3^2 + 0 * 3 + 2 = 20102_3;
  2. 173 = 128 + 32 + 8 + 4 + 1 = 2^7 + 2^5 + 2^3 + 2^2 + 1 = 10101101_2.

2. Преобразование дробной части числа. Дробная часть числа x, в соответствие с разложением (1), выглядит следующим образом:

x_{fract} = b_{n + 1}p^{ - 1} + b_{n + 2}p^{ - 2} + b_{n + 3}p^{ - 3} + \dots

Заметим, что если умножить x_{fract} на p, то целая часть результата будет равна b_{n + 1}, а дробная часть будет иметь вид b_{n + 2}p ^{- 1} + b_{n + 3}p^{- 2} + \dots Коэффициент b_{n + 2} из разложения дробной части можно найти аналогичным образом, и т. д.

Положим r_0 = x_{fract}. Для первых m знаков после запятой имеем:

r_0p = b_{n + 1} + r_1,\\
r_1p = b_{n + 2} + r_2,\\
\dots\\
r_{m - 1}p= b_{n + m} + r_m},

где b_{n + i} = [r_{i - 1}p], r_i = {r_{i - 1}p}, для i = 1, 2, ..., m. Очевидно, что 0 \le r_j < 1, для j = 0, 1, ..., m.

Пример 7. Найдем троичное представление числа 0,7. Имеем:

0,7 * 3 = 2 + 0,1; 0,1 * 3 = 0 + 0,3; 0,3 * 3 = 0 + 0,9; 0,9 * 3 = 2 + 0,7;
0,7 * 3 = 2 + 0,1, и т. д.

Следовательно, 0,7 = 0,(2002)_3.

Для вычислений удобно использовать таблицы. В табл. 1.1 приведены вспомогательные вычисления для преобразования трех чисел: 0,7 - в троичную систему счисления,\frac{2}{3} - в восьмеричную и 0,9 - в двоичную. Каждому числу соответствует столбец таблицы, серым цветом в каждом столбце выделен период.

Таблица 1.1. Преобразование дробной части числа
p=3 p=8 p=2
0,7 \frac23 0,9
2,1 5\frac13 1,8
0,3 2 \frac23 1,6
0,9 5\frac13 1,2
2,7 0,4
2,1 0,8
1,6

Таким образом, 0,7 = 0,(2002)_3, \frac{2}{3}=0.(52)_8; 0,9 = 0,1(1100)_2.

Лекция 1: 1234 || Лекция 2 >