ТранспортМодаРецептыБлогиОхотаПутешествияСпортВесельеСвоими РукамиITЗнания
Мини-Игры
x

x
zakruti.com » ru » IT – Софт » Компьютерные Секреты
Как работают числа с плавающей точкой - основы программирования

Как работают числа с плавающей точкой - основы программирования

VKTwitterOK

содержание видео

Рейтинг: 4.5; Голоса: 2
КАК РАБОТАЮТ ЧИСЛА С ПЛАВАЮЩЕЙ ТОЧКОЙ - float, double и тд. Типы данных, которые мы используем работают не совсем так, как мы этого ожидаем. Некоторые дроби невозможно представить в двоичном виде. Как компьютер хранит такие числа в памяти, что привнес стандарт IEEE-754 - узнаете в данном видео
Дата: 2023-03-12

Комментарии и отзывы: 20


Решение проблемы простое: нужно хранить дробные числа как отношение целых. Например, 5, 9=59/10 или в двоичной системе: 111011/1010. И все, никакой потери точности. В этом виде число можно умножать, делить и делать с ним что угодно, с абсолютной точностью. Проблема только в том, что при большом количестве операций умножения/деления длина числителя и знаменателя будет быстро разрастаться. Но, например, в бухгалтерии не так часто нужно последовательно умножать и делить, так что можно использовать такой формат записи там, во избежание мухлежа с чьей-то зарплатой.
ответить

Я правильно понимаю, что если мантиссу сдвигать до точки не вынося единицу в целую часть, то забывать достаточно будет только нулевую целую часть (не надо держать в голове, что там всегда единица, а к показателю степени в таком случае прибавляется 128, а не 127? В таком случае получается, что показатель степени пишется по тем же правилам, что и обычные знаковые целые, только старший бит знака инвертирован и не надо никаких 127 прибавлять-отнимать, достаточно поксорить бит знака.
ответить

00: 00 Введение
00: 46 Число с плавающей точкой
01: 37 Институт IEEE
02: 08 Математический сопроцессор
02: 48 Перевод дробных чисел
03: 53 Экспоненциальная запись
05: 27 Форматы хранения дробных чисел
06: 14 Хранение числа в формате одинарной точности
07: 36 Хранение степени
10: 24 Хранение специальных значений
11: 34 Восстановление числа из памяти
13: 06 Бесконечная дробь
14: 02 Запись бесконечной дроби в память
14: 46 Обзор других форматов
15: 50 Заключение

ответить

Спасибо, очень интересно!
Возможно именно это и является проблемой некоторых размеров при создании чертежа печатной платы (или 3d модели печатной платы. Например: межцентровые расстояния из 15 мм превращаются в 15. 0000001 или 14. 99999999 при конвертации из pcb в dxf и из dxf в frw (это формат фрагмента в Компасе. Если кто-то сталкивался с подобным подскажите, а то всем отделом голову ломаем. Прошу прощения если нафлудил. Заранее благодарю.

ответить

всё же я не понимаю, что если мы сложим например 2. 5 + 2. 5; переведем число 2, 5 в двоичную => 1. 01 21 => мантисса = 01, степень = 1, представим степень в двоичном виде => 127 + 1 = 128 = 1000 0000. Выходит, согласно правилу, число 2, 5 должно выглядеть как
0 1000 0000 0100 0000 0000 0000 0000 000. Сложим их и получим отрицательное число
1 0000 0000 1000 0000 0000 0000 0000 000. Что я не так делаю?

ответить

Спасибо за ваш труд! Можно спросить, обязательно ли писать экспоненту в двоичной системе? На моменте 9: 46 я сначала не поняла почему степень равна=10, только потом догнала что это 2 в двоичной системе. Получается надо писать Е в двоичной системе? В формулах же обычно либо десятичная система, либо Е+127, поэтому не совсем понимаю.
ответить

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

ответить

Респект, автору. Благодаря объяснению понял что еще люди земли не создали комп который может высчитать абсолютный НОЛЬ, а то б уже давно смогли понять физические свойства тонких материй мироздания и научились путешествовать в космосе. В общем есть направление куда двигаться и над чем работать, человечеству. )
ответить

Блин. очень крутая подача. и прорисовка инфографики. Огромный респект. НО. подскажи плиз, как ты это всё делаешь? Проходил какие-то курсы по инфографике? Какой-то специализированный софт? (Как и в чём это всё монтируется) Явно видно рука набита (или огромный талант; ) ). раскрой секрет плиз, как такому научиться.
ответить

Вопрос от джуниора.
Предположим, я создам переменную float testFloatVar = 7. 25;
И хочу посмотреть, что память отведённая под это число, выглядит так, как предусмотрено стандартом.
Как мне это сделать?
Если я создам указатель на эту переменную и выведу его разыменованное значение, то получу 7. 25

ответить

Не понял на моменте восстановления числа из памяти. Почему мы отбросили остаточные нули в мантиссе? Что если в десятичной записи там будет храниться не 13 (1101, а 26 (11010? Где хранится информация о том, сколько битов надо отрубить от мантиссы?
ответить

Я правильно понимаю, что мантисса числа, когда целая часть всегда равна единице имеет двоичную запись, а 10 в какой-то степени записаны десятичной записью? Неужто не придумали способов обозначать какое число в какой системе записано!
ответить

Как всегда шикарная подача и отменная плотность полезного материала, единственный момент, который я не совсем понял - 2: 55, Вы говорите переводим из десятичной в двоичную, а на экране появляется перевод из двоичной в десятичную
ответить

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

Господа шарящие. Подскажите, а почему число с плавающей точкой нельзя представить как два отдельных числа? В первом хранить целую часть, а во втором дробную часть, но она при этом будет представлена целым числом.
ответить

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

Пишите на ассемблере ) Да, ассемблер долго писать, за то ооочень быстро работает, оооочень мало места занимает, оооочень мало жрёт энергии, и пофигу на подобного рода геморрой.
ответить

Отличное видео и прекрасная подача материала, наконец-то открылась загадка ещё со школьной скамьи, почему при делении числа с остатком калькулятор показывал число вида 5. 89999961
ответить

Конечно, скорек всего, это будет глупый вопрос. Но почему нельзя преобразовывать дробную часть числа таким же методом, что мы используем для целой части, был бы рад узнать
ответить

Всё хорошо. НО!
На 8: 37 выносная линия к значению Степень - 8 бит смещена на 1 пиксель относительно выносной линии значения Дробная часть - 23 бита
Акела промахнулся.

ответить
Добавить отзыв, комментарий






Другие видео канала