Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
инфа 2 семестр.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.12 Mб
Скачать

2. Системы счисления, переводы чисел из одной позиционной системы счисления в другую

Система счисления (СС) – это совокупность правил записи и наименования чисел. Существуют позиционные и непозиционные СС.

СС называется позиционной (непозиционной), если значение цифры числа зависит (не зависит) от местоположения цифры в числе.

Непозиционная СС, например, римская:

I – 1, V – 5, X – 10, L – 50, C – 100, D – 500, M – 1000  XXVII, XLIV

Общепризнанной ПСС является 10-ая СС. Она использует для записи чисел цифры 0, 1,

2, 3, 4, 5, 6, 7, 8, 9.

727,7 – это сокращенная запись 7 *102+2*101 +7*100 +7*10-1

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

Основанием позиционной СС называется количество единиц какого-либо разряда, объединяемых в единицу соседнего старшего разряда.

Основание СС в любой ПСС записывается как 10 Примеры ПСС: 60ричная, 12-ричная, 5-ричная.

В ПСС с основанием Р>1 любое число может быть записано в двух формах:

1) сокращенной и 2) в виде многочлена.

  1. Х = an an-1 an-2 an-3 … a1 a0, a-1 a-2 … a-m

Значением числа является сумма значений его цифр.

  1. X = an*pn+an-1*pn-1 +an-2*pn-2+…+a1*p1+a0*p0+a-1*p-1+a-2*p-2+…+a-m*p-m

Здесь p – основание СС, 0 <= ai <=P-1 – называют базисными цифрами данной СС. Количество базисных цифр равно основанию СС. В информатике часто используются 2ая, 8ая и 16ая СС.

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

Сложение Умножение

    1. + 0 = 0 0 * 0 = 0

    1. + 1 = 1 1 * 0 = 0

    2. + 0 = 1 0 * 1 = 0

    1. + 1 = 10 1 * 1 = 1

Чтобы перевести число из «чужой» СС в «свою», необходимо:

  1. представить данное число в виде многочлена;

  2. базисные цифры и основание Q-ичной СС записать с помощью P-ичных чисел;

  3. выполнить арифметические действия.

Примеры:

  1. (125,2)8  10 = 1*102 +2*101 +5*100 + 2*10-1 = 1*82 +2*81 +5*80 +2*8-1 = 64 + 16 + 5 +0,25 = (85,25)10

  2. Переводы чисел из одной ПСС в другую. Схема Горнера:

(101,01)2  10 = 1*102 +0*101 +1*100 + 0*10-1 +1*10-2 = 1*22 +0*21 +1*20 +0*2-1 +1*2-2 = 4 + 1 + 0,25 = (5,25)10 ;

  1. (AB1)16  10 = A*102 +B*101 +1*100 = 10*162 + 11*161 + 1* 160 = 2560 + 176 + 1=

= (2737)10.

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

an*pn+an-1*pn-1+an-2*pn-2+…+a1*p1+a0*p0 = = ((…(an*P + an-1)*P + an-2)*P +…+a1)*P + a0 Например:

(1321)8  10 = ((1*8 + 3)*8 + 2)*8 + 1 = (721)10

(1234)8  10 = ((1*8 + 2)*8 + 3)*8 + 4 = (668)10

Смешанные СС

Смешанная Q-P-ичная СС - это СС, в которой каждая цифра P-ичного числа записывается с помощью n Q-ичных цифр, где n - это количество Q-ичных цифр, достаточных для хранения старшей Р-ичной цифры.

Например, число 2410 в 2-10-й СС равно 0010 0100 2-10.

Переводы чисел для СС, связанных соотношением P = Qn.

  1. Перевод из P в Q. Чтобы перевести число из СС с основанием P в СС с основанием Q, достаточно каждую цифру данного числа записать с помощью n Q-ичных разрядов, используя таблицу представления базисных цифр Переводы чисел для СС, связанных соотношением P = Qn. Числа с фиксированной и плавающей точкой:

  2. Перевод из Q в P. Чтобы перевести число из СС с основанием Q в СС с основанием P, достаточно данное число разбить влево и вправо от запятой на группы по n разрядов, неполные крайние группы можно дополнить нулями. Затем каждую такую группу записать с помощью одной P-ичной цифры.

Примеры:

(1BF9,51)16  2  8 = (0001 1011 1111 1001, 0101 0001)2 = (15771,242)8

(7541,23)8  2  16 = (111 101 100 001,010 011)2 = (F61,4C)16 Числа с фиксированной и плавающей точкой. X = знак (an an-1 an-2…a0 a-1 a-2…a-m)p – это запись числа с фиксированной точкой.

Записываем в виде многочлена:

Х = знак (an*Pn + an-1*Pn-1 + an-2*Pn-2 +…+a0*P0 + a-1*P-1 + a-2*P-2 +…+ a-m*P-m)P

Вынесем за скобку в качестве множителя Pk и свернем, получим число в форме с плавающей точкой.

Числа с фиксированной и плавающей точкой. Нормализованные числа.

Х = знак (an*Pn-k + an-1*Pn-1-k + an-2*Pn-2-k +…+ a0*P-k + ak-1*P-1 + ak-2*P-2 +…+ a-m*P-m-k)*Pk

  1. X = знак (an an-1 an-2…ak, ak-1 ak-2…a-m)*Pk или

  2. X = знак |M| * Рзнак |n|

Число с плавающей точкой называется нормализованным числом, если в записи 1) k = n+1 и an <> 0, или в записи 2) мантисса M удовлетворяет условию 1/P <= |M| < 1.

Например: 3.1415926

0.0031415926*103

314.15926*10-2

0.31415926

Арифметические действия над числами с плавающей точкой.

  1. M1*2p1 + M2 *2p2 = M*2p, если P1 > P2, то вычисляется P1 - P2, M2 сдвигается на (P1 - P2) разрядов вправо и мантиссы складываются, результат нормализуется, так что порядок суммы чисел P = P1 + P/, где P/ учет нормализации мантиссы результата суммирования.

  2. Вычитание сводится к сложению

  3. Умножение: M = M1*M2 и P = P1+P2+P/

  4. Деление: M = M1/M2 и P = P1–P2+P/

Нетрадиционные позиционные системы счисления ПСС делят на традиционные, нетрадиционные и смешанные. Все ПСС одинаковы в том смысле, что:

1) Арифметические операции выполняются по одним и тем же правилам; 2) Справедливы одни и те же законы арифметики ..

3) Правила выполнения арифметических действий опираются на таблицы сложения и умножения в P-ичной СС.

Для традиционных ПСС вводится понятие базис и основание СС так, что базис – это последовательность чисел, каждое из которых задает значение цифры по ее месту в записи, т.е.

задает вес каждого разряда. Тогда, базис 10-ой СС – это 1, 101, 102, 103, 104…10n, а в общем виде:

…p-2, p-1, 1, p, p2 p3…pn

Знаменатель P геометрической прогрессии, члены которой образуют базис традиционной СС, является основанием СС.

Нетрадиционные позиционные системы счисления. Факториальная ПСС.

В традиционных ПСС вес единиц разрядов числа растет справа налево равномерно в P раз, где P – основание СС. В нетрадиционных ПСС вес единиц разрядов в числе также растет, но не равномерно, а по какому-либо другому закону. Например, число, записанное в факториальной ПСС имеет значение в 10-ой СС, равное сумме факториалов n первых натуральных чисел, умноженных на цифры факториальной записи числа.

3221ф = 3*4! + 2*3! + 2*2! + 1*1! = 8910

40301ф = 4*5! + 3*3! + 1*1! = 49910

Чтобы перевести число из 10-ой СС в факториальную, необходимо разделить данное число на 2, затем целую часть разделить на 3, затем на 4 и т. д. пока целая часть не окажется равной нулю.

3. Понятие подпрограммы, функции, возвращающие значения в С/С++, описание и использование

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

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

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

Достоинства использования подпрограмм:

Позволяет избегать дублирования одинаковых частей программы, делая ее короче, но увеличивая время ее выполнения (за счет передачи параметров, обращения к подпрограмме, возврату из нее);

Делает структуру программы более четкой и понятной (основная программа записана более кратко, использование подпрограммы более эффективно с точки зрения разработки, отладки, модификации программы). Отдельные подпрограммы, модули, можно хранить в отдельных файлах, т.е. отдельно друг от друга.

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

В С/С++ существует один тип подпрограмм – функции. Но функции здесь реализуются так, что они могут выдавать один результат и тогда обращением к ним является указатель функции (имя функции, за которым в () через запятую фактические параметры). В этом случае указатель функции – операнд в выражении или элемент списка вывода.