Формирование целых чисел в позиционных системах счисления



В каждой системе счисления цифры упорядочены в соответствии с их значениями: 1 больше 0, 2 больше 1 и т.д.

Продвижением цифры называют замену её следующей по величине.

Продвинуть цифру 1 значит заменить её на 2, продвинуть цифру 2 значит заменить её на 3 и т.д. Продвижение старшей цифры (например, цифры 9 в десятичной системе) означает замену её на 0. В двоичной системе, использующей только две цифры - 0 и 1, продвижение 0 означает замену его на 1, а продвижение 1 - замену её на 0.

Целые числа в любой системе счисления порождаются с помощью Правила счета [4]:

Для образования целого числа, следующего за любым данным целым числом, нужно продвинуть самую правую цифру числа; если какая-либо цифра после продвижения стала нулем, то нужно продвинуть цифру, стоящую слева от неё.

Применяя это правило, запишем первые десять целых чисел

  • в двоичной системе: 0, 1, 10, 11, 100, 101, 110, 111, 1000, 1001;
  • в троичной системе: 0, 1, 2, 10, 11, 12, 20, 21, 22, 100;
  • в пятеричной системе: 0, 1, 2, 3, 4, 10, 11, 12, 13, 14;
  • восьмеричной системе: 0, 1, 2, 3, 4, 5, 6, 7, 10, 11.

 

Принципы кодирования чисел в позиционных системах счисления

Чтобы перевести число, скажем, 12345N, из системы счисления с основанием  в десятичную систему, нужно умножить значение каждой цифры на  в степени, равной ее разряду:

P XuvvP4PLvwAAAP//AwBQSwMEFAAGAAgAAAAhAMI51JzdAAAACgEAAA8AAABkcnMvZG93bnJldi54 bWxMj8FOwzAQRO9I/IO1SNxaJ0YOJcSpKiSOIJGCxNGNTRyw11HstuHvWU5wXM3TzNtmuwTPTnZO Y0QF5boAZrGPZsRBwev+cbUBlrJGo31Eq+DbJti2lxeNrk0844s9dXlgVIKp1gpczlPNeeqdDTqt 42SRso84B53pnAduZn2m8uC5KIqKBz0iLTg92Qdn+6/uGBR0ftc/if2zu33/LFF0b8lhmZS6vlp2 98CyXfIfDL/6pA4tOR3iEU1iXoGU5Q2hClZCSGBEVJW8A3YgVG6Atw3//0L7AwAA//8DAFBLAQIt ABQABgAIAAAAIQC2gziS/gAAAOEBAAATAAAAAAAAAAAAAAAAAAAAAABbQ29udGVudF9UeXBlc10u eG1sUEsBAi0AFAAGAAgAAAAhADj9If/WAAAAlAEAAAsAAAAAAAAAAAAAAAAALwEAAF9yZWxzLy5y ZWxzUEsBAi0AFAAGAAgAAAAhANdfySJFAwAAVAYAAA4AAAAAAAAAAAAAAAAALgIAAGRycy9lMm9E b2MueG1sUEsBAi0AFAAGAAgAAAAhAMI51JzdAAAACgEAAA8AAAAAAAAAAAAAAAAAnwUAAGRycy9k b3ducmV2LnhtbFBLBQYAAAAABAAEAPMAAACpBgAAAAA= " adj="-1941,27076" fillcolor="#ff9" stroked="f">

N0 = 1
4 3 2 1 0 ← разряды

1 2 3 4 5N = 1·N4 + 2·N3 + 3·N2 + 4·N1 + 5·N0  

· последняя цифра записи числа в системе счисления с основанием – это остаток от деления этого числа на ;

· две последние цифры – это остаток от деления на , и т.д.

Пример. Укажите через запятую в порядке возрастания все десятичные числа, не превосходящие 25, запись которых в системе счисления с основанием четыре оканчивается на 11?

Общий подход: вспомним алгоритм перевода числа из десятичной системы в систему с основанием N, из него следует, что младшая цифра результата – это остаток от деления исходного числа на N, а две младших цифры – это остаток от деления на N 2 и т.д. В данном случае N =4, остаток от деления числа на N 2=16 должен быть равен 114 = 5. Потому задача сводится к тому, чтобы определить все числа, которые меньше или равны 25 и дают остаток 5 при делении на 16.

Решение (через десятичную систему): Общий вид чисел, которые дают остаток 5 при делении на 16 k·16+5, где k – целое неотрицательное число (0, 1, 2, …). Среди всех таких чисел нужно выбрать те, что меньше или равны 25 («не превосходят 25»); их всего два: 5 (при k=0) и 21 (при k=1). Таким образом, верный ответ – 5, 21.

Пример.Укажите через запятую в порядке возрастания все основания систем счисления, в которых запись числа 23 оканчивается на 2.

Общий подход: Здесь обратная задача – неизвестно основание системы счисления, мы обозначим его через N. Поскольку последняя цифра числа – 2, основание должно быть больше 2, то есть N >2. Вспомним алгоритм перевода числа из десятичной системы в систему с основанием N, из него следует, что младшая цифра результата – это остаток от деления исходного числа на N.

Решение: Итак, нужно найти все целые числа N ≥3, такие что остаток от деления 23 на N равен 2, или (что-то же самое), 23=k · N+2 (*), где k – целое неотрицательное число (0, 1, 2, …); сложность в том, что и k, и N неизвестны, однако здесь нужно «играть» на том, что это натуральные числа;из формулы (*) получаем k · N =21, так что задача сводится к тому, чтобы найти все делители числа 21, которые больше 2; в этой задаче есть только три таких делителя: N=3,7 и 21; таким образом, верный ответ – 3, 7, 21.

Пример. Укажите через запятую в порядке возрастания все основания систем счисления, в которых запись числа 31оканчивается на 11.

Общий подход: Неизвестно основание системы счисления, мы обозначим его через N . Пока будем считать, что запись числа 31 в системе с основанием N состоит из трех цифр, причем две младшие (11) нам даны, а одну (обозначим ее через k) нужно найти:

2 1 0 ← разряды

31 k 1 1N = k·N2 + N1 + N0 = k·N2 + N + 1

Можно показать, что при большем количестве разрядов эта формула также верна, то есть, число 31 можно представить, как 31=k·N2+N+1 при некотором целом k; например, для числа с пятью разрядами получаем:

4 3 2 1 0 ← разряды

31 = k4 k3 k2 1 1N = k4·N4 + k3·N3 + k2·N2 + N1 + N0= k·N2 + N + 1

Для k=k4N2+k3N+k2 (из первых трех слагаемых вынесли общий множитель N2).

Решение: Итак, нужно найти все целые числа N≥2, такие что 31=k · N 2+N+1 (**), где k – целое неотрицательное число (0, 1, 2, …); сложность в том, что и k, и N неизвестны, однако здесь нужно «играть» на том, что это натуральные числа. Из формулы (**) получаем (k · N+1)N =30, так что задача сводится к тому, чтобы найти все делители N числа 30 и отобрать только те из них, для которых уравнение (**) разрешимо при целом k, то есть, – целое число выпишем все делители числа 30, большие или равные 2: 2, 3, 5, 6, 10, 15, 30, из всех этих делителей только для 2, 3, 5 и 30 значение – целое число (оно равно соответственно 7, 3, 1 и 0). Таким образом, верный ответ – 2, 3, 5, 30.


Дата добавления: 2019-09-08; просмотров: 236; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!