Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.28;
Скачать: CL | DM;

Вниз

Уважаемые Мастера, очень нужна ваша помощь !!!   Найти похожие ветки 

 
Tornado ©   (2002-10-09 12:49) [0]

Есть у меня такое задание:

Перевести число 175,34 из десятичной системы счисления в двоичную. Погрешность при этом не должна превысить 0,01. Изложить соображения, поясняющие как достигается заданная точность перевода.

Пожалуйста, помогите, я уже замучился, давно с двоичной алгеброй не имел дела. Перевести число - без проблем, но вот что еще нужно: округлить полученное число (10101111,0101011 - вродь правильно перевел) и сделать проверку. У меня есть чужой примерчик, но никак я что-то не разберусь, подкиньте идейку, весь инет излазил. Огромное спасибо заранее.
Вот пример:

Перевести число 127,45 из восьмеричной системы счисления в шестеричную. Погрешность не должна превысить 0,1%.

а) Определим абсолютную максимально допустимую погрешность.
Десятичный эквивалент исходного числа равен
1*64 + 2*8 + 5*1 + 4/8 + 5/64 = 85,578 (с точностью до 0,001)
0,1% от числа 85,578 составляет примерно 0,09 в десятиной системе счисления.
б) Определим количество цифр в дробной части числа в искомой (шестеричной) системе счисления.
Веса соответствующих разрядов дробной части числа:

Номер разряда -1 -2 -3
Вес разряда 1/6 1/36 1/216

Вес единицы разряда -2 не достигает величины 0,03.

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

в) Переведем целую часть числа делением на 6.
Делимое Частное Остаток
127 16 3
16 2 2
2 0 2
Целая часть в новой системе счисления равна 223.

г) Переведем дробную часть умножением на 6
Целая часть Дробная часть
0, 45
3, 26
1, 64
4, 70
Дробная часть до округления равна 0,314
д.) Результат (в шестеричной системе счисления):
до округления после округления
223,314 223,32
е.) Проверка.
Для проверки преобразуем число 223,32 в десятичную систему счисления.
Оно равно 2*36 + 2*6 + 2*1 + 3*(1/6) + 2*(1/36) = 85,194 (с точностью до 0,001).

Абсолютная погрешность перевода (85,578 - 85,194) = . . .


 
MBo ©   (2002-10-09 12:59) [1]

для обеспечения точности не хуже 0.01 нужно иметь 7 знаков после запятой в двоичной записи - 1/128


 
Tornado ©   (2002-10-09 13:18) [2]

> MBo © (09.10.02 12:59)

Да, согласен, я так и сделал (правильно?):

Номер разряда -1 -2 -3 -4 -5 -6 -7
Вес разряда 1/2 1/4 1/8 1/16 1/32 1/64 1/128

А как это число округлить и проверить? Сейчас в этом загвоздка. И еще, в примере (см. выше) искался 0,1% от 127,45 (0,09) а потом, когда определили веса пишется:
Вес единицы разряда -2 не достигает величины 0,03. Вот 0,03 - это откуда? Спасибо огромное за ответ


 
Jeer ©   (2002-10-09 13:21) [3]

Tornado © (09.10.02 12:49)
>(10101111,0101011 - вродь правильно перевел)

И перевел неверно
Дробная часть, с учетом поста MBO,
выглядит так
0.34 ~ 0.0101011 == 0.3359375 (e = 0.0041)


 
Jeer ©   (2002-10-09 13:25) [4]

>И перевел неверно
Rollback, сорри

e = x - (A0*2^(-1)+A1*2^(-2)+A2*2^(-3)+...A(n-1)*2^(-n))


 
MBo ©   (2002-10-09 13:29) [5]

Добавлю, что в приведенном примере указана погрешность 0.1 %, т.е. относительная (ошибка/значение), а у тебя в задаче написано просто 0.01, т.е. подразумевается абсолютная погрешность.



Страницы: 1 вся ветка

Текущий архив: 2002.10.28;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.033 c
3-92368
_pavel_
2002-10-07 18:13
2002.10.28
VCL компоненты на MySQL


1-92529
zam2000
2002-10-16 10:05
2002.10.28
Как сохранить буфер обмена, чтобы потом его восстановить?


1-92474
Жорик
2002-10-16 11:03
2002.10.28
Есть ли у кого нибудь полный вариант компонента SkinForm?


14-92652
Aga
2002-10-05 20:35
2002.10.28
АААААааа-ааа-ааа!!!! Помогите!!!


3-92372
Oleg_er
2002-10-08 06:41
2002.10.28
TQuery & SELECT fld, (SELECT fld1 FROM ...) as..., FROM...