Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопрос по Visual Basic

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2

Открыть новую тему     Написать ответ в эту тему

LadyOfWood

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Посмотрите на описание стандарта, например: http://softelectro.ru/ieee754.html тут прексрасно показано откуда все берется у денормализованных чисел.

Всего записей: 620 | Зарегистр. 16-09-2003 | Отправлено: 19:15 08-04-2015
1lex1

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
И где там написано что у него может быть степень двойки "128"?

Всего записей: 306 | Зарегистр. 22-11-2013 | Отправлено: 19:48 08-04-2015
LadyOfWood

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
1lex1
2^-126 * 2^-23= 2^-149 =~ 1,40129846E-45

Всего записей: 620 | Зарегистр. 16-09-2003 | Отправлено: 19:56 08-04-2015 | Исправлено: LadyOfWood, 19:56 08-04-2015
1lex1

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LadyOfWood спасибо, но мой последний вопрос был
Цитата:
а разве максимальное значение степени двойки у денормализованного числа 128
Например для нормализованного явно указано 127 и это соответствует указанному диапазону значений float в msdn, а для single в VB этого не написано.
 
Добавлено:

Цитата:
максимальное число    ±2127*(2-2-23) = ± 3,40282347*e+38

Всего записей: 306 | Зарегистр. 22-11-2013 | Отправлено: 20:02 08-04-2015 | Исправлено: 1lex1, 20:07 08-04-2015
KDPoid



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
1lex1,
Итак, мантисса. 23 бита.  
Обычно, в нормализованных числах, мы считаем, что это дробная часть, которую мы прибавляем к 1.
Т.е. единственный младший бит в мантиссе - это десятичное число 1.0000001
Но тогда яма вокруг нуля уж больно большая.
Тогда придумали денормализованные числа.
Чтобы отличать их от нормализованных - пожертвовали одним значением экспоненты.
Т.е. нормализованные стали до 2^(-126)=~1.17e-38
А у денормализованных (или как их называют буржуи - субнормальных
мантисса прибавляется не к 1, а к 0.
Т.е. единственный младший бит денормализованного числа - это десятичное число 0.0000001.
Что даёт нам сдвиг ещё на семь десятичных разрядов.  
Так у денормализованных е-38 превращается в е-45.
 
Теперь я правильно понял, что вам было не понятно ?
 
Поиграться с представлением вещественных чисел можно, например, здесь:
_http://www.h-schmidt.net/FloatConverter/IEEE754.html
 

Всего записей: 404 | Зарегистр. 08-08-2006 | Отправлено: 20:31 08-04-2015 | Исправлено: KDPoid, 05:45 09-04-2015
1lex1

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Теперь я правильно понял, что вам было не понятно ?
Спасибо, но то, что у "single" в VB нет старшей единицы понял сразу после первого ответа LadyOfWood. И у меня сразу возник вопрос: какое максимальное значение степени двойки у денормализованного числа 127 или 128? Например для нормализованного однозначно написано 127 по ссылке выше
Цитата:
максимальное число    ±2127*(2-2-23) = ± 3,40282347*e+38

Всего записей: 306 | Зарегистр. 22-11-2013 | Отправлено: 21:12 08-04-2015
KDPoid



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
1lex1,
так, вы меня путаете.
Денормализованные - это очень близкие к 0.
Под них выделено единственное значение экспоненты. -127
Что значит "максимальное значение степени двойки у денормализованного числа" ?

Всего записей: 404 | Зарегистр. 08-08-2006 | Отправлено: 05:50 09-04-2015
1lex1

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Под них выделено единственное значение экспоненты. -127  

Вот оно, большое спасибо, разобрался. Только там степень двойки -126. А я думал нормализованные и денормализованные существут независимо и каждый из них имеет полный диапазон степеней. Также по ссылке выше был пример Возьмем, к примеру, десятичное число 155,625. Представим это число в денормализованном экспоненциальном виде. Который вводил в заблуждение

Всего записей: 306 | Зарегистр. 22-11-2013 | Отправлено: 08:12 09-04-2015 | Исправлено: 1lex1, 08:14 09-04-2015
KDPoid



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А вот теперь у меня чувство, что я не разобрался.

Цитата:

Цитата:
 
Под них выделено единственное значение экспоненты. -127  

Вот оно, большое спасибо, разобрался. Только там степень двойки -126

 
Экспонента 8 бит. все биты пустые - получаем 0
Из неё вычитается 127. -127 - минимальное значение экспоненты.
Именно оно и зарезервировано под денормализованные числа.
-126 - установлен младший бит экспоненты, это уже нормализованные числа, т.е. к мантиссе сразу добавляется 1 а не 0.
 
Опять же отсылаю к  
_http://www.h-schmidt.net/FloatConverter/IEEE754.html
 
00000000000000000000000000000001 = 1.4E-45
00000000100000000000000000000001 = 1.1754945E-38

Всего записей: 404 | Зарегистр. 08-08-2006 | Отправлено: 09:05 09-04-2015 | Исправлено: KDPoid, 09:06 09-04-2015
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопрос по Visual Basic


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru