Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по программированию / 03 Простые типы данных языка С.bak.pptx
Скачиваний:
60
Добавлен:
06.06.2015
Размер:
371.09 Кб
Скачать

Схема Горнера

Вход: b > 0, k > 0 (число цифр),aiнабор;

N ak 1;

цикл по i от k - 2 вниз до 0

N = N b + ai ;

конец цикла;

Выход: N

k-1 операция * k-1 операция +

Построение записи в b- ичной с.с.

Вход: N 0, b > 0; i = 0;

цикл

ai = N mod b; (mod – остаток от деления нацело)

N = N div b; (div целое деление) i = i + 1;

пока N ≠ 0; Выход:

набор ai, i ( число значащих цифр) число операций деления = i

Пример – построение 2-ной записи

325 Целая часть

| Остаток от деления

на 2

162

1

81 0

40 1

20 0

10 0

5 0

2 1

1 0

0 1

325(10) = 101000101(2)

Перевод числа из b1-с.с. в b2-с.с.

b1-с.с. b2-с.с.

b10- с.с.

Представление действительных чисел

S = al 1al 2 al 3 ...a2 a1a0 .a 1a 2a 3 ...a 1...(b)

l 1

 

N (s) al 1bl 1 ... a0b0 a 1b1 ... a ib i ... aibi .

i

 

Если в дробной части числа конечное число

 

знаков k,

(6)

то нижний индекс суммы равен — k .

 

N f (s) (a 1 (a 2 (a 3 (...) / b) / b) / b) / b

 

0.375=(3+(7+5/10)/10)/10=(3+(7+(5+0)/10)/10)/10

Связь дробной части числа

со значением

(6)

N f (s) (a 1 (a 2

(a 3

(...) / b) / b) / b) / b,

(7)

 

 

 

N k 1 0;

N i (a i N i 1) / b; где i = k, …

N f (s) N 1.

, 1;

 

Примеры

N(«1.101(2)») = 1 20 +1 2-1 +0 2-2 +1 2-3

=1 + 0.5 + 0.125

=1.625

Nf(«1.101(2)») =(1 +(0 +(1 +0)/2)/2)/2

= (1 + (0 + 0.5)/2 )/2

1

= (1 + 0.25) / 2 = 0.625

9

Nf(«0.01(3)») = 1 3-2 = = 0.(1)

Окончание лекции

Алгоритм (построения) записи дробной части в b-с.с

Вход -- Nf ( 0 ≤ Nf < 1), b >1 i = -1;

цикл

a[i] = ц.ч.(Nf*b); // первая цифра дробной // части числа Nf

Nf = Nf*b-a[i]; i = i – 1; пока Nf != 0

Выход -- набор i < 0, a[i+], a[i+2], …, a[-1] Когда алгоритм не завершится?

Пример построения 2-ичной записи дробного числа

0.375 (3 (7 5 /10) /10) /10 (3 (7 (5 0) /10) /10) /10

N f 0.375; N 1 0.375;

0.375*2 0.75; N 2 0.75; a 1 0;

0.75*2 1.5; N 3 0.5; a 2 1; 0.5*2 1.0; N 4 0; a 3 1;

0.375 10 0.011 2 1/ 4 1/ 8 3 / 8 0.375