То есть, всё видео можно заменить фразой: потому что некоторые десятичные числа в двоичной системе - периодические дроби, которые не влезают в память =)
Поэтому для банковских приложений программисты не доверяют вычисления языку программирования. Обычно есть специальные библиотеки/модули для таких дел. Ну и используют строгую типизацию.
Ты правда красавчик. Мало того, что ты пишешь крутые и понятные видосы, так ещё и стал для меня примером целеустремленности. Никогда не сдавайся и я не буду! Спасибо
Я внимательно посмотрел на алгоритм хеширования сети BItcoin (SHA256), и мне вообще не хочется о нём рассказывать... Особенно потому, что для понимания его работы людям понадобится второе скучное сухое двадцатиминутное видео про Питон, где надо было бы объяснить массивы, циклы и классы. Которое никто не будет смотреть. Уиии...
Думаю для студентов которые идут на какие-то специальности по типу программиста видосы будут очень полезны А мне для понимания видоса приходится вспоминать школьный курс информатики Кстати прикольно и понятно объясняешь
Чёрт, это гениальный вопрос. Кажется, в стандарт заложен особый случай для нуля. Когда вообще всё нули вместо крошечной степени двойки получается ноль.
Там ещё много нюансов: и мантисса не всегда начинается с единицы (т.н. _денормализованные_ числа), и нуля два (положительный и отрицательный), а также две бесконечности (со знаком) и два значения NaN (qNaN и sNaN).
@@WissenYT , как сказал мой препод по архитектуре, всё зависит от реализации в самом процессоре, что-то вроде: если ячейка не определена, как плавающее число, то в ней ноль
Предположим, мы включили поддержку float64 из numpy >>> from numpy import float64 и определили следующие переменные >>> a = float64(0) >>> b = 1/a >>> c = b**a Чему будут равны их значения >>> [a, b, c] и внутреннее представление?
Привет, Виссен! Был крайне опечален тем, что более этот канал не будет связан с минуткой земли и боялся, что канал скатится во что-то унылое и неинтересное. Хотя, вероятно, для какой-то части аудитории это так. Но я крайне рад, что так сложилось, что мои интересы перекликаются с направлением канала. Спасибо большое за труд. P.S. Ты упоминаешь, что твои ролики унылые, но если брать за ЦА тех, кто +- связан с направлением, то твои ролики как глоток свежего воздуха в сравнении с 2часовыми лекциями с унылыми примерами и спящим лектором в преклонном возрасте. Чувство, что именно такого наставника я ждал всю свою жизнь. хаха P.S.S Привет из JavaScript c ` 0.1 + 0.2 !== 0.3 `
30 лет, калькулятор был игрушкой в детстве. У тётушки даже были советские калькуляторы от розетки 220В работающие. Класса с 5-6-го букву Е всегда считал "ошибкой(error).
Вопрос. Зачем нужен "костыль" с модулем для коррекции точности, если его необходимо было встроить в язык де-факто? То-есть разработчики языка намеренно встроили в вычислительные алгоритмы ошибку чтобы что?...Если это сейчас не нужно, то необходимо исключить ошибку из языка.
для научных вычислений, например, до сих пор работают с 32-битными числами с плавающей запятой, память меньше, операция выполняется быстрее, огромная точность не нужна, ибо погрешности
@@bvpanchenko Но всё равно получается расхождение, если расчёт выполняется "в столбик" на бумажке или на компьютере. Ты округляешь 0,5 в большую сторону, а компьютер в меньшую, а потом оказывается, что эти 0,5 в его памяти содержатся, как 0,49. И это несистемно, потому что 1,5 может храниться в памяти как 1,51 и она будет округляться до 2. Получается, что перед тем, как писать алгоритмы расчётов, нужно ещё предусмотреть алгоритмы коррекции, и в результате мы теряем время и дополнительную память. То-есть мы не может взять язык программирования и использовать базовый функционал даже для созданий калькулятора, потому что он не будет выдавать верный результат.
@@АлексейХ-н3й 1.51 - может не округляется до 2х если что, зависит от типа округления. 1/3 пожалуйста запиши в виде десятичной дроби. Проблему все знают, и что ты предлагаешь делать ? Всякий Decimal - накладные расходы как на память так и на ЦПУ. То есть вы сами выбираете когда какой тип данных использовать, исходя из поставленной задачи
Надеюсь оговорка на "вообще все" не относится ко всему каналу. Надеюсь найдешь ещё какие-нибудь интересные темы. Насчёт Биткойна тема неплохая, просто так много где уже ее объяснили, что хз (это мое мнение, кто не смотрел думаю зайдет)
@@endlessvd Даа, походу тебя кто-то сильно обидел, и ты решил выплеснуть свою злость в комментах. Я тебе так скажу, пунктуация стоит намного ниже, чем уважение, вежливость и человечность. (тем более логические запятые расставлены, читать текст не составляет проблем, а это именно то, для чего нужны запятые)
Давно задавался этим вопросом! Спасибо за объяснение! А то во время работы в Unity иногда вместо координат без запятой получались значения вроде 3.9999999999988
Ну дробные числа в "традиционных" float-ах вполне есть зачем хранить, если вы хотите, чтоб приложение не совсем тупило и не вешало компы пользователей (как современный клиент фейсбука например). Так что по моему опыту всякие Decimal и BigInt реже используются, (как раз когда нужна большая точность дробных чисел, а это редкие случаи). А ещё я на 4:01 увидел кусок кода на питоне интересный. Всякие стракт_анпэки, итераторы. Что это он там такое дееелает? :D Реквестирую следующее видео об этом!
struct_pack выдаёт байтовую последовательность числа number в формате числа с плавающей точкой, struct_unpack перетрактовывает эту последовательность в виде целого числа (int_pack), у результата берётся нулевой элемент ([0]; т.к. struct_unpack возвращает tuple), целое число конвертируется в строку со своим двоичным представлением (bin), от него отрезается префикс "0b" ([2:]), строка с двоичным представлением дополняется слева нулями до длины bits (rjust). По этой строке формируется итератор bin_iter. В следующей строке кода формируется возвращаемый из функции массив, в котором будут подстроки из вышесформированной двоичной строки с длинами 1, exponent_bits и mantissa_bits соответственно (bin_iter в процессе пробегания иксом значений (1, exponent_bits, mantissa_bits) и формирования очередной подстроки-элемента результирующего массива смещается каждый раз на соответствующее значение).
Напишите программу на языке Паскаль, а также постройте блок-схему алгоритма для решения следующей задачи: Вычислить среднее арифметическое всех положительных значений функции y(x) = x3 + cos4x, на промежутке [-2; 2] с шагом h = 0.2.
Не шарю в этих делах, но есть такой вопрос: а вообще технически возможно хранить рациональные числа не в виде десятичных (двоичных) дробей, а в виде натуральной дроби? Ну и при желании придумать отдельную операцию для иррациональных чисел? И будет ли, если возможно, такое рентабельным?
У него много принципов - майнинг (нахождение подходящего блока) отдельно, связность блоков (ссылки на предыдущие блоки) и дерево транзакций в блоке отдельно, граф транзакций (стыковка входов транзакции с выходами предыдущих транзакций) отдельно, эллиптическая криптография (подпись транзакций) отдельно. Внятность зависит от того, какой именно нюанс вас интересует. Если всё сразу - в любом случае придётся самостоятельно по частям воспринимать, а это долго (чудес не бывает, увы). Впрочем, дорогу осилит идущий :)
Даже после этого перечисления стало понятнее чем после некоторых роликов. Как пример доступного объяснения для меня - статья на Мичурин.нет про RSA шифрование.
Виссен, касательно запрета на публикацию выпусков "минутка земли". Разрешение на перевод получили Vert Dider. Однако дайдер просили разрешение на "минутку физики", что они в итоге и переводят, но ни одного видео из минутки земли. То есть на запрос перевода одного канала они дали добро на оба. Если объяснить им это, можно всё-таки вернуть право на выпуск роликов. Копию письма с разрешением можно найти по ссылке в конце описания любого ролика дайдера.
@@WissenYT Да, вижу. На самом канале дайдеров их нет, вот и подумал, что оно так есть. Не посмотрел, что они вывели это всё на отдельный канал, а в плейлисте на основном только Минуту Физики оставили.
Чесгря проблема в современном виде несколько надумана - связка мантисса-экспонента и типы данных вроде BigDecimal или Currency решают эту проблему в 100% более-менее внятных программ, требующих точности и не требующих скорости. А где нужна только скорость численных методов, там вообще сплошные хаки, типа Quake III Q_sqrt
О, да - это знаменитое i = 0x5f3759df - ( i >> 1 ); // what the fuck? вычисляющее обратный квадратный корень (*интересно, пропустит ли нейросеть RUclips этот комментарий*)
«Тратить лишний бит на знак порядка никто не хотел» звучит так, словно здесь экономится бит (как это происходит с мантиссой). На самом же деле смещённый порядок ничего не экономит - на отличие отрицательных порядков от положительных всё равно нужен бит информации. Смещённый порядок лишь упрощает выполнение операций над порядками. Например, логика сравнения двух порядков становится проще. Пока у нас есть отдельный знаковый бит, нужно по-разному сравнивать отрицательные порядки и положительные (в двоичном представлении). А при смещённом порядке любой порядок можно рассматривать как положительный.
А если ещё углубиться, то обнаружится, что сэкономленный -0 не даёт дополнительной точности даже на одну единицу. Как раз одно из значений порядка в IEEE 754 (111…1) полностью отдано под две бесконечности и огромное количество вариантов представления NaN (=
привет Виссен, помнишь свое видео про двоичную логику? Ну конечно да, так вот благодаря тебе у по информатике все оценки ПЯТЬ, но одно проблема меня записали на олимпияду. Спасибо тебе за твои видео и не мог бы сделать видео про решение задач из олимпиады? А так спасибо что объясняешь доступно.
Я понял, вот только вопросик остался, ну с 1.15 это понятно, перидческое число и всё такое. Я однажды написал калькулятор на C# (надеюсь большой разницы нету) и даже такая более менее простая операция как 12-0.2 давало такой же результат, а конкретно неточность, но в чём проблема числа 0.2? Она тоже периодическая?
Да, в двоичной системе счисления число 0.2 = 1/5 = 3/15 = 0.(0011)₂ записывается в виде периодической дроби. Конечными будут только несократимые дроби со знаменателями, равными степеням двойки: 0.5 = 1/2 = 0.1₂, 0.25 = 1/4 = 0.01₂, и т.д.
@@СергейЗло-й7я В той, основание которой делится на 3: 1/3 = 0.1₃ (троичной) = 0.2₆ (шестеричной) = 0.3₉ (девятеричной) = 0.4₁₂ (и так далее) = 0.C₃₆ (10 цифр + 26 букв)
Расскажу, почему используют такие неточные числа. Потому что в науке и технике числа - представьте себе - неточные! Ведь они приходят с измерительных приборов и датчиков, и неточность в семь или пятнадцать знаков - это мелочи по сравнению, например, с тремя знаками с датчика. Если же нужен точный формат - есть та самая длинная арифметика.
Методов хранения произвольных действительных чисел не существует в принципе (вне зависимости от объёмов памяти и диска), поэтому арифметика с ограниченной точностью - вынужденный компромисс. Более того, _почти все_ действительные числа _невычислимы,_ т.е. не существует алгоритма для их вычисления с произвольной точностью (хотя это уже имеет косвенное отношение к вопросу, но факт остаётся фактом: вероятность того, что мы сможем вычислить с заданной точностью произвольно выбранное действительное число, равна нулю).
Любое _действительное_ число всегда представимо в виде бесконечной дроби в любой системе счисления с целым положительным основанием b ≥ 2, причём _рациональные_ числа (т.е. дроби p/q) всегда имеют периодическую запись, а _иррациональные_ (√2, √3, e, π) - только непериодическую. Но тут есть нюансы: 1) Если в разложении знаменателя несократимой дроби q на простые множители встречаются только делители основания системы счисления b, то такую обыкновенную дробь можно записать в виде бесконечной дроби двумя способами: с периодом 0 и с периодом (b−1) - в первом случае получаем конечную запись. Например, в десятичной системе счисления это все дроби вида p/(2ᵐ⋅5ⁿ), в двоичной, восьмеричной и шестнадцатеричной - p/2ᵐ, а в двенадцатеричной - p/(2ᵐ⋅3ⁿ). 2) Некоторые иррациональные числа (а именно корни квадратных уравнений с рациональными коэффициентами) представимы в виде периодических _цепных_ дробей, например, "золотое сечение" или корень из двух: φ = [1; 1, 1, 1, ...] = [1; (1)] = 1.41421... √2 = [1; 2, 2, 2, ...] = [1; (2)] = 1.61803... а все _рациональные_ числа имеют конечную запись: 355/113 = [3; 7, 16] = 3.14159... 3) В общем случае основание системы не обязано быть целым положительным числом b ≥ 2, а может быть дробным (¹/₂, ¹/₃, ...), отрицательным (−2, −3, ...), иррациональным (√2, φ, e, π, ...) и даже комплексным (например, система счисления Дональда Кнута с мнимым основанием b = 2𝕚). Так, в системе счисления с основанием b = φ ("золотое сечение") получаем: 1 = 1ᵩ 2 = 10.01ᵩ √5 = 10.1ᵩ φ = (1+√5)/2 = 10ᵩ
На самом деле людей пытали авторы стандартов на электронную почту. Они решили, что только 7 бит из 8 могут кодировать символ. В итоге, письма можно было посылать только на английском. И до сих пор так. Чтобы отправить письмо на китайском или русском, его текст превращается в ту еще кашу из 7-ми битных знаков...
Но вообще у термина "мантисса" два значения: для нормализованной записи a⋅10ᵖ она удовлетворяет условию 1 ≤ a < 10, а для таблиц десятичных логарифмов lg(a⋅10ᵖ) = p + lg(a) = p + m, где 0 ≤ m < 1 - дробная часть десятичного логарифма.
@@allozovsky , понятно, а почему мантисса нормализованного двоичного числа всегда имеет 1 в начале? Например, 5.6 = 101,10011001100=1,0110011001100×2^2
@@user-zf7gz6wm8i По той же причине: в системе счисления с основанием b стандартный вид числа имеет вид a⋅bᵖ, поэтому в двоичной системе мантисса будет удовлетворять условию 1 ≤ a < b или 1 ≤ a < 2, т.е. целая часть мантиссы всегда будет равна 1.
А теперь минутка рациональный вопрос: Почему ни кто не задумался о неправильности метода вычисления двоичного перевода числа из десятичного или о неправильности метода перевода числа из десятичного в двличное, если применяя методы в прямом и обратном направлении, получаются разные результаты. Фактически - теряются данные. Более того, метод перевода числа из десятичной в двоичную и метод перевода числа из двоичной в десятичную, должны быть взаимообратными. Однако, если применение обратного преобразования над прямым преобразованием не даёт изначального числа, следует что сами методы не взаимообратны. Так почему же всем на это плевать?
Метод правильный просто эти эффекты проявляются из-за основания системы счисления это как небезызвестный пример почему двенадцатиричная(с оснонованием 12) лучше десятичной(с основанием десять, число 1/3 в десятичной 0,333333(3) те бесконечная дробь, в двенадцатиричной просто 0,4 Вычислительная техника работает на двоичной логике потому что строить вычислительную технику да системах с другим основание можно но сложно и дорого, и все равно это будет в какомто сымысле костыль надстройка над двоичной
@@ВячеславРустамян-н2х ты "государству" за то много должен, я прям щас отдам тебе яблоки, а ты должен фантики с условными цифрами. На одной золотой монете написано "10 ЗОЛОТЫХ МОНЕТ" "БАНК РОСИ" ХА ХА
там должны использоваться числа высокой точности. Копейка не сходиться это обычно округления + последовательно операций. Еще есть метод округления. Например в "банковское", где 1.5==1
А можно было как то попонятнее объяснить? Я понимаю что ты умный и все это понимаешь, но примеры которые ты привел, ну не понятны же. Или видео было создано ради видео?
насколько я понял - из двоичной записи изза ограниченного количества символов отбрасывается "конец" - оттуда и погрешность в районе 16го разряда дробной части а во всем виноваты устаревшие технологии которые продолжают эксплуатироваться изза устаревшего ПО которое никто не хочет переписывать или предоставлять аналоги
Виноваты не устаревшие технологии, а несовершенство двоичной логики в принципе. Это можно исправить увеличивая разрядность системы, только её нельзя повышать бесконечно, иначе даже 2+2 будет вычисляться кучу времени.
То есть, всё видео можно заменить фразой: потому что некоторые десятичные числа в двоичной системе - периодические дроби, которые не влезают в память =)
спс
Так понятнее) чем на видео
Хах, а реально, всю суть ролика понял только после твоего коммента)
@@holy2785 ну, всё же без видео эта фраза будет не всем понятна!
@@futakomori кому? детям лет 4-5?
Ничего не понимаю, но такие видео должны быть в топе, потому что вот как раз это - прекрасный контент!
Спасибо
То самое видео, которые смотрят в 3 часа ночи
Не знаю не знаю, у меня 3: 22 ))))
В час ))
2:05
04:59
В два часа 🤔
Поэтому для банковских приложений программисты не доверяют вычисления языку программирования. Обычно есть специальные библиотеки/модули для таких дел. Ну и используют строгую типизацию.
Для них есть особые типы, decimal, например, которые построенны на цельночисельных типах
@@endlessvd нихера, ты токсик, удачи в жизни
Ещё бы они не продумали такое. Грамотный прогер из спортивного интереса бы скриптами обанктротил систему.
@@endlessvd а твой вообще нет, дегенерат обиженный, совершивший правонарушение
@@endlessvd в твоей маме я есть)
поздравляю с взлетевшим видосом)
и это не перевод какой то, это твой контент!
Ты правда красавчик. Мало того, что ты пишешь крутые и понятные видосы, так ещё и стал для меня примером целеустремленности. Никогда не сдавайся и я не буду!
Спасибо
Поддерживаю!!!
+
Я внимательно посмотрел на алгоритм хеширования сети BItcoin (SHA256), и мне вообще не хочется о нём рассказывать... Особенно потому, что для понимания его работы людям понадобится второе скучное сухое двадцатиминутное видео про Питон, где надо было бы объяснить массивы, циклы и классы. Которое никто не будет смотреть. Уиии...
Я буду
И я
Я буду
👀
Пили давай! У тебя слишком хорошо получается контент такого рода
У тебя отличные видео, а идея рассказать про майнинг биткойна "с нуля" вообще офигенная. Keep up the good work!
@@the_hhhh тогда почему он не вскидывает руку в небо и не кричит слава Руси? выписываем
На 10 лет только опоздал с битком
Думаю для студентов которые идут на какие-то специальности по типу программиста видосы будут очень полезны
А мне для понимания видоса приходится вспоминать школьный курс информатики
Кстати прикольно и понятно объясняешь
Блин, я немного знаю питон, но даже так мне кажется что он говорит что то на эльфийском.
Ахахах, смойся...
@@endlessvd аааа, ты байтер, ну давай иди дальше все равно аудиторию нормальную так не набрать
@@endlessvd Ты только ругаться можешь мелкий аут?
@@endlessvd ахаха, можешь пытаться ещё но сразу понял что ты недолëкий байтер...
А так вот почему это происходит . Спасибо, теперь всё встало на свои места . Так держать ! :)
В конце видео: "На этом всё. Вообще всё!". И мир коллапсирует.
Спасибо за видео, было интересно ゚+(人・∀・*)+。♪
Залпом просмотрел весь цикл роликов. Ждём дальше:)
На самом деле, очень удобно и полезно мне, как ученику физ.инф. класса! Делай больше Видосов, они крутые!
Я СНОВА НАШЕЛ ЭТОТ КАНАЛ! ДААААА!
Когда взял в кредит 1.1 биткоина и 2.2 биткоина получил 3.3000000003 биткоина и и стал миллиардером
И нада аддавать кридит и с працэнтами ты должэн 4 биткоина
@@neckrontir и произошла ошибка в системе, и ты должен отдать 40btc
@@neckrontir кредит без процентов при возвращении до определенного момента
@@neckrontir И надо отдавать Кредит и с процентами ты должен 4 биткоина*
(КУЧА ОШИБОК)
@@υηκηοωη2467 я не руский
Мне стало интересно, а как представлен 0? Если мантисса начинается с единицы
Чёрт, это гениальный вопрос. Кажется, в стандарт заложен особый случай для нуля. Когда вообще всё нули вместо крошечной степени двойки получается ноль.
Там ещё много нюансов: и мантисса не всегда начинается с единицы (т.н. _денормализованные_ числа), и нуля два (положительный и отрицательный), а также две бесконечности (со знаком) и два значения NaN (qNaN и sNaN).
@@WissenYT , как сказал мой препод по архитектуре, всё зависит от реализации в самом процессоре, что-то вроде: если ячейка не определена, как плавающее число, то в ней ноль
@@soviertheman5392 кажется, вы проходили архитектуру бассейнов в банковских отделениях
Ого, как то я и не заметил как видео выстрелило
Ну чтож, поздравляю, Евген!
Да там ваще! На видео про триггер со свиньёй уже 100к просмотров.
@@WissenYT интересно, сколько гривень могло бы быть, будь монетизация включена. 2-3К?
Предположим, мы включили поддержку float64 из numpy
>>> from numpy import float64
и определили следующие переменные
>>> a = float64(0)
>>> b = 1/a
>>> c = b**a
Чему будут равны их значения
>>> [a, b, c]
и внутреннее представление?
Это суперкруто! Спасибо огромное за эти потрясающие видео об алгоритмах и программировании. Я очень жду твоих следующих видео на эту тематику!
Привет, Виссен! Был крайне опечален тем, что более этот канал не будет связан с минуткой земли и боялся, что канал скатится во что-то унылое и неинтересное. Хотя, вероятно, для какой-то части аудитории это так. Но я крайне рад, что так сложилось, что мои интересы перекликаются с направлением канала. Спасибо большое за труд.
P.S. Ты упоминаешь, что твои ролики унылые, но если брать за ЦА тех, кто +- связан с направлением, то твои ролики как глоток свежего воздуха в сравнении с 2часовыми лекциями с унылыми примерами и спящим лектором в преклонном возрасте. Чувство, что именно такого наставника я ждал всю свою жизнь. хаха
P.S.S Привет из JavaScript c ` 0.1 + 0.2 !== 0.3 `
Не-не, всё в порядке, я скатился
30 лет, калькулятор был игрушкой в детстве. У тётушки даже были советские калькуляторы от розетки 220В работающие. Класса с 5-6-го букву Е всегда считал "ошибкой(error).
До этого видео. Вывод: век живи - век учись.
Вопрос. Зачем нужен "костыль" с модулем для коррекции точности, если его необходимо было встроить в язык де-факто? То-есть разработчики языка намеренно встроили в вычислительные алгоритмы ошибку чтобы что?...Если это сейчас не нужно, то необходимо исключить ошибку из языка.
Да заткнись ты
для научных вычислений, например, до сих пор работают с 32-битными числами с плавающей запятой, память меньше, операция выполняется быстрее, огромная точность не нужна, ибо погрешности
@@bvpanchenko Но всё равно получается расхождение, если расчёт выполняется "в столбик" на бумажке или на компьютере. Ты округляешь 0,5 в большую сторону, а компьютер в меньшую, а потом оказывается, что эти 0,5 в его памяти содержатся, как 0,49. И это несистемно, потому что 1,5 может храниться в памяти как 1,51 и она будет округляться до 2.
Получается, что перед тем, как писать алгоритмы расчётов, нужно ещё предусмотреть алгоритмы коррекции, и в результате мы теряем время и дополнительную память. То-есть мы не может взять язык программирования и использовать базовый функционал даже для созданий калькулятора, потому что он не будет выдавать верный результат.
@@АлексейХ-н3й 1.51 - может не округляется до 2х если что, зависит от типа округления. 1/3 пожалуйста запиши в виде десятичной дроби.
Проблему все знают, и что ты предлагаешь делать ? Всякий Decimal - накладные расходы как на память так и на ЦПУ. То есть вы сами выбираете когда какой тип данных использовать, исходя из поставленной задачи
@@АлексейХ-н3й По поводу "пишут коррекции", не уверен что из пишут, только при сравнении берут диапазон
Ну вот, твои видео интересные, ничуть ни хуже минутки земли
Круто! Ждём курс по Python от тебя 😀
Надеюсь оговорка на "вообще все" не относится ко всему каналу.
Надеюсь найдешь ещё какие-нибудь интересные темы. Насчёт Биткойна тема неплохая, просто так много где уже ее объяснили, что хз (это мое мнение, кто не смотрел думаю зайдет)
@@endlessvd Даа, походу тебя кто-то сильно обидел, и ты решил выплеснуть свою злость в комментах. Я тебе так скажу, пунктуация стоит намного ниже, чем уважение, вежливость и человечность.
(тем более логические запятые расставлены, читать текст не составляет проблем, а это именно то, для чего нужны запятые)
@@ziral0 давай я его забаню просто
Давно задавался этим вопросом! Спасибо за объяснение! А то во время работы в Unity иногда вместо координат без запятой получались значения вроде 3.9999999999988
Ну дробные числа в "традиционных" float-ах вполне есть зачем хранить, если вы хотите, чтоб приложение не совсем тупило и не вешало компы пользователей (как современный клиент фейсбука например). Так что по моему опыту всякие Decimal и BigInt реже используются, (как раз когда нужна большая точность дробных чисел, а это редкие случаи). А ещё я на 4:01 увидел кусок кода на питоне интересный. Всякие стракт_анпэки, итераторы. Что это он там такое дееелает? :D Реквестирую следующее видео об этом!
Понятия не имею, что он делает.
@@Jamato-sUn С чего ты решил, что вопрос был тебе?
struct_pack выдаёт байтовую последовательность числа number в формате числа с плавающей точкой, struct_unpack перетрактовывает эту последовательность в виде целого числа (int_pack), у результата берётся нулевой элемент ([0]; т.к. struct_unpack возвращает tuple), целое число конвертируется в строку со своим двоичным представлением (bin), от него отрезается префикс "0b" ([2:]), строка с двоичным представлением дополняется слева нулями до длины bits (rjust). По этой строке формируется итератор bin_iter. В следующей строке кода формируется возвращаемый из функции массив, в котором будут подстроки из вышесформированной двоичной строки с длинами 1, exponent_bits и mantissa_bits соответственно (bin_iter в процессе пробегания иксом значений (1, exponent_bits, mantissa_bits) и формирования очередной подстроки-элемента результирующего массива смещается каждый раз на соответствующее значение).
Я ничерта не смыслю в математике и почти столько же в программировании. Так что я ничего не понял, но мне было очень интересно
Напишите программу на языке Паскаль, а также постройте блок-схему алгоритма для решения следующей задачи:
Вычислить среднее арифметическое всех положительных значений функции
y(x) = x3 + cos4x, на промежутке [-2; 2] с шагом h = 0.2.
200 тысяч просмотров поздравляю
случайно наткнулся на это видео, оно меня сразу заинтересовало. Видео очень понравилось, я сразу подписался
Не шарю в этих делах, но есть такой вопрос: а вообще технически возможно хранить рациональные числа не в виде десятичных (двоичных) дробей, а в виде натуральной дроби? Ну и при желании придумать отдельную операцию для иррациональных чисел? И будет ли, если возможно, такое рентабельным?
Хранят как два целых числа, я как раз в конце упомянул as integer ratio
можно, но такие операцию будут медленнее обычных.
Интересное видео, мне понравилось
Тут писали, что де в сети уже есть полно видео про биткоин.
На мой взгляд, нет ни одного, внятно объясняющего принцип работы.
У него много принципов - майнинг (нахождение подходящего блока) отдельно, связность блоков (ссылки на предыдущие блоки) и дерево транзакций в блоке отдельно, граф транзакций (стыковка входов транзакции с выходами предыдущих транзакций) отдельно, эллиптическая криптография (подпись транзакций) отдельно. Внятность зависит от того, какой именно нюанс вас интересует. Если всё сразу - в любом случае придётся самостоятельно по частям воспринимать, а это долго (чудес не бывает, увы). Впрочем, дорогу осилит идущий :)
Даже после этого перечисления стало понятнее чем после некоторых роликов.
Как пример доступного объяснения для меня - статья на Мичурин.нет про RSA шифрование.
Виссен, касательно запрета на публикацию выпусков "минутка земли". Разрешение на перевод получили Vert Dider. Однако дайдер просили разрешение на "минутку физики", что они в итоге и переводят, но ни одного видео из минутки земли. То есть на запрос перевода одного канала они дали добро на оба. Если объяснить им это, можно всё-таки вернуть право на выпуск роликов.
Копию письма с разрешением можно найти по ссылке в конце описания любого ролика дайдера.
Что? Я общался с ними, и они вроде бы переводят Минутку Земли спокойно.
@@WissenYT Да, вижу. На самом канале дайдеров их нет, вот и подумал, что оно так есть. Не посмотрел, что они вывели это всё на отдельный канал, а в плейлисте на основном только Минуту Физики оставили.
Я никоим образом не программист, но технарь.
Однако, было интересно.
приятный блин видос. клево
Чесгря проблема в современном виде несколько надумана - связка мантисса-экспонента и типы данных вроде BigDecimal или Currency решают эту проблему в 100% более-менее внятных программ, требующих точности и не требующих скорости. А где нужна только скорость численных методов, там вообще сплошные хаки, типа Quake III Q_sqrt
О, да - это знаменитое
i = 0x5f3759df - ( i >> 1 ); // what the fuck?
вычисляющее обратный квадратный корень
(*интересно, пропустит ли нейросеть RUclips этот комментарий*)
«Тратить лишний бит на знак порядка никто не хотел» звучит так, словно здесь экономится бит (как это происходит с мантиссой). На самом же деле смещённый порядок ничего не экономит - на отличие отрицательных порядков от положительных всё равно нужен бит информации.
Смещённый порядок лишь упрощает выполнение операций над порядками. Например, логика сравнения двух порядков становится проще. Пока у нас есть отдельный знаковый бит, нужно по-разному сравнивать отрицательные порядки и положительные (в двоичном представлении). А при смещённом порядке любой порядок можно рассматривать как положительный.
А если ещё углубиться, то обнаружится, что сэкономленный -0 не даёт дополнительной точности даже на одну единицу. Как раз одно из значений порядка в IEEE 754 (111…1) полностью отдано под две бесконечности и огромное количество вариантов представления NaN (=
Очень интерестно слушать
Джаваскриптерам привет. пхпшникам соболезную
7:51 оу мэн я чуть не кончил от такого произношения ))
Куча инфы которая мне вряд ли понадобится
привет Виссен, помнишь свое видео про двоичную логику? Ну конечно да, так вот благодаря тебе у по информатике все оценки ПЯТЬ, но одно проблема меня записали на олимпияду. Спасибо тебе за твои видео и не мог бы сделать видео про решение задач из олимпиады? А так спасибо что объясняешь доступно.
print("F")
Вот не думал, что в двоичной системе тоже есть дроби с периодичным ответом. Не зря пол видео останавливал себя чтобы не выключить его.
Для меня питон это змея, но так как пора спать и завтра рано вставать, обязательно посмотрю видос и вникну в тему.
после этого видео надо смотреть как лечить удава)
Когда решил посмотреть ролики про программирование, но не шаришь за программирование
Всё очень понятно. Дело ясное, что дело тёмное... 😁
Комментарий для поддержания автора ааа ааа ааа ааа ааа ааа
Я понял, вот только вопросик остался, ну с 1.15 это понятно, перидческое число и всё такое. Я однажды написал калькулятор на C# (надеюсь большой разницы нету) и даже такая более менее простая операция как 12-0.2 давало такой же результат, а конкретно неточность, но в чём проблема числа 0.2? Она тоже периодическая?
Да, в двоичной системе счисления число 0.2 = 1/5 = 3/15 = 0.(0011)₂ записывается в виде периодической дроби. Конечными будут только несократимые дроби со знаменателями, равными степеням двойки: 0.5 = 1/2 = 0.1₂, 0.25 = 1/4 = 0.01₂, и т.д.
@@allozovsky Спасибо большое за информацию!
@@allozovsky Интересно, а 1/3 в какой системе не будут бесконечной дробью?
@@СергейЗло-й7я В той, основание которой делится на 3:
1/3
= 0.1₃ (троичной)
= 0.2₆ (шестеричной)
= 0.3₉ (девятеричной)
= 0.4₁₂ (и так далее)
= 0.C₃₆ (10 цифр + 26 букв)
@@allozovsky круто, получается можно такие дроби просто записывать в другой системе и никакой бесконечности
Расскажу, почему используют такие неточные числа. Потому что в науке и технике числа - представьте себе - неточные! Ведь они приходят с измерительных приборов и датчиков, и неточность в семь или пятнадцать знаков - это мелочи по сравнению, например, с тремя знаками с датчика. Если же нужен точный формат - есть та самая длинная арифметика.
Спасибо! Ничего не понял но очень интересно
Потому что переменные должны быть типизированы и обрабатываться нормальными библиотеками. Особенно в эру терабайтов памяти и диска.
Методов хранения произвольных действительных чисел не существует в принципе (вне зависимости от объёмов памяти и диска), поэтому арифметика с ограниченной точностью - вынужденный компромисс. Более того, _почти все_ действительные числа _невычислимы,_ т.е. не существует алгоритма для их вычисления с произвольной точностью (хотя это уже имеет косвенное отношение к вопросу, но факт остаётся фактом: вероятность того, что мы сможем вычислить с заданной точностью произвольно выбранное действительное число, равна нулю).
Спасибо за труд. Успехов вам. Ура реклама.
У вас очень хороший голос. Вспоминаю, как вы переводили минутку земли.
Самый лучший экранный диктор для учебника 56 класса
Я НАШЁЛ ТЕБЯ!
Я уж думал ты канал удалил, теперь я тебя не потеряю
Немного не по теме вопрос. В других система счисления бесконечные дроби вполне себе конечные?
Любое _действительное_ число всегда представимо в виде бесконечной дроби в любой системе счисления с целым положительным основанием b ≥ 2, причём _рациональные_ числа (т.е. дроби p/q) всегда имеют периодическую запись, а _иррациональные_ (√2, √3, e, π) - только непериодическую. Но тут есть нюансы:
1) Если в разложении знаменателя несократимой дроби q на простые множители встречаются только делители основания системы счисления b, то такую обыкновенную дробь можно записать в виде бесконечной дроби двумя способами: с периодом 0 и с периодом (b−1) - в первом случае получаем конечную запись. Например, в десятичной системе счисления это все дроби вида p/(2ᵐ⋅5ⁿ), в двоичной, восьмеричной и шестнадцатеричной - p/2ᵐ, а в двенадцатеричной - p/(2ᵐ⋅3ⁿ).
2) Некоторые иррациональные числа (а именно корни квадратных уравнений с рациональными коэффициентами) представимы в виде периодических _цепных_ дробей, например, "золотое сечение" или корень из двух:
φ = [1; 1, 1, 1, ...] = [1; (1)] = 1.41421...
√2 = [1; 2, 2, 2, ...] = [1; (2)] = 1.61803...
а все _рациональные_ числа имеют конечную запись:
355/113 = [3; 7, 16] = 3.14159...
3) В общем случае основание системы не обязано быть целым положительным числом b ≥ 2, а может быть дробным (¹/₂, ¹/₃, ...), отрицательным (−2, −3, ...), иррациональным (√2, φ, e, π, ...) и даже комплексным (например, система счисления Дональда Кнута с мнимым основанием b = 2𝕚). Так, в системе счисления с основанием b = φ ("золотое сечение") получаем:
1 = 1ᵩ
2 = 10.01ᵩ
√5 = 10.1ᵩ
φ = (1+√5)/2 = 10ᵩ
мб ввести . после числа, которая предполагает 99.99999999999 точность?
А можно повторить?
Вау, первое видео у тебя, в котором я нихрена не понял. Так держать!
Чел если ты что-то не понял посмотри видео о которых говорил автор , а потом пересмотри это
Учусь сейчас на промэлектронике, очень помогают эти видео. Афтар пили исщо
Эхх,давно я на тебя не заходил.с тех времен когда ты ещё делал перевод одного канала
Точно, а я сейчас наткнулся на этот видос, увидел знакомый канал и никак не мог вспомнить, откуда я его знаю
Красава!!!
Было бы интереснее, если бы показала деление с восстановлением остатка и без него
Гораздо интереснее вопрос - откуда в компьютере сопроцессор !
Непонятно но интересно, надо бы как то понять
Посмотрел видео, но ничего не понял, но понял, как питон не правильно вычисляет
Мне нравится.
Просто ахренеть как всё запутанно. Тот кто изобрёл эту хрень- раньше людей пытал,- неужели нельзя как то проще выдумать чонить.
На самом деле людей пытали авторы стандартов на электронную почту. Они решили, что только 7 бит из 8 могут кодировать символ. В итоге, письма можно было посылать только на английском. И до сих пор так. Чтобы отправить письмо на китайском или русском, его текст превращается в ту еще кашу из 7-ми битных знаков...
Специально так делают по заказу всемирного банка...что бы с каждой операции забирать эти лишние циферки...вот на них они и делают миллиарды...
Пересмотрел 3 раза, и всё равно не понял :/
Пересматриваю уже 4 раз 😅
Объясняешь вроде понятно, и подробно, и голос классный, и дикция хорошая, нооо... я всё равно ничего не понял(
Ну прости
@@WissenYT твоей вины нет, я не дошёл до такого уровня еще, чтобы уловить всю нить)
Почему мантисса имеет целую часть в примере с 0.075? Разве нормальзованное число не равно 0.75*10^(-1)?
В стандартном виде число всегда имеет ненулевую первую цифру - именно для неё указывается порядок, т.е. 0.075 = 7.5⋅10⁻² - порядок величины равен -2.
Но вообще у термина "мантисса" два значения: для нормализованной записи a⋅10ᵖ она удовлетворяет условию 1 ≤ a < 10, а для таблиц десятичных логарифмов lg(a⋅10ᵖ) = p + lg(a) = p + m, где 0 ≤ m < 1 - дробная часть десятичного логарифма.
@@allozovsky , понятно, а почему мантисса нормализованного двоичного числа всегда имеет 1 в начале? Например, 5.6 = 101,10011001100=1,0110011001100×2^2
@@user-zf7gz6wm8i По той же причине: в системе счисления с основанием b стандартный вид числа имеет вид a⋅bᵖ, поэтому в двоичной системе мантисса будет удовлетворять условию 1 ≤ a < b или 1 ≤ a < 2, т.е. целая часть мантиссы всегда будет равна 1.
@@allozovsky я поражена тем, что чел с ютуба помог мне ответить на вопрос быстрее и понятнее, нежели чем 2 преподавателя в университете, герою слава!
А теперь минутка рациональный вопрос:
Почему ни кто не задумался о неправильности метода вычисления двоичного перевода числа из десятичного или о неправильности метода перевода числа из десятичного в двличное, если применяя методы в прямом и обратном направлении, получаются разные результаты. Фактически - теряются данные. Более того, метод перевода числа из десятичной в двоичную и метод перевода числа из двоичной в десятичную, должны быть взаимообратными. Однако, если применение обратного преобразования над прямым преобразованием не даёт изначального числа, следует что сами методы не взаимообратны.
Так почему же всем на это плевать?
Метод правильный просто эти эффекты проявляются из-за основания системы счисления это как небезызвестный пример почему двенадцатиричная(с оснонованием 12) лучше десятичной(с основанием десять, число 1/3 в десятичной 0,333333(3) те бесконечная дробь, в двенадцатиричной просто 0,4
Вычислительная техника работает на двоичной логике потому что строить вычислительную технику да системах с другим основание можно но сложно и дорого, и все равно это будет в какомто сымысле костыль надстройка над двоичной
Я то помню старые времена про минутку земли ...
Крутое видео
Это получаеться, что в пятерочке на кассе не кассир наябывает?
На кассах гораздо удобнее числа хранить в целочисленном виде, как количество копеек (т.к. копейка неделима)
Мой крошечный мозг не может переварить это...
А что мы здесь счЕтали (счёт)?
Числа это условные символы, которых не существует в природе.
3 яблока минус 6 яблок = ? яблок.
ты должен мне 3 яблока
чЕт и чИт(а) чередующиеся корни. Если после корня есть "а", в корне пишется "и"
@@ВячеславРустамян-н2х ты "государству" за то много должен, я прям щас отдам тебе яблоки, а ты должен фантики с условными цифрами.
На одной золотой монете написано
"10 ЗОЛОТЫХ МОНЕТ"
"БАНК РОСИ"
ХА ХА
@@semgachannel6282 а что счИтали то?
как это всё?
чувствую себя стримершой из мема
-сложна! сложна!
Вы не искали это видео оно само вас нашло
О о о видос
Открытие галактики свершилось...А если серьезно просто нужно пойти и почитать стандарт IEEE 754
За 3 курса в вузе нам никто не ответил почему в float 1.499999999999999999991, а не 1.5
Это кстати С
@@KBAc56 смотря какой вуз. А вообще даже в моем я не припомню такой информации сам читал.
1000 лет не видел людей которые используют метод format() вместо fстрок
я новичок и про этот метод вообще не слышал, даже гуглить пошёл, всегда пользовался f-строками.
формат позволяет вывести красивый вывод -) Не более
Вся суть расхождений в бухгалтерских программах разных фирм...вечно 1 копейка не идёт
там должны использоваться числа высокой точности. Копейка не сходиться это обычно округления + последовательно операций. Еще есть метод округления. Например в "банковское", где 1.5==1
Я сразу понял что ошибка в умножении на 1,15
-Это ошибка унесла жизни-
2:20 не так уж сильно я хотел видео посмотреть
мне одному напоминает это версии игр
в порядке возрастания
Вроде бы, IEEE читается, как «Ай трипл и»
Аийееее!
Ееее бой
И три е
0.0000000000001=0
0.0000000000001кусочек торта это ничто
А можно было как то попонятнее объяснить? Я понимаю что ты умный и все это понимаешь, но примеры которые ты привел, ну не понятны же. Или видео было создано ради видео?
3:20 - никакой карточки не вылезло, что я делаю не так?
5:35 единицу*
Э.... нет?
насколько я понял - из двоичной записи изза ограниченного количества символов отбрасывается "конец" - оттуда и погрешность в районе 16го разряда дробной части
а во всем виноваты устаревшие технологии
которые продолжают эксплуатироваться изза устаревшего ПО которое никто не хочет переписывать или предоставлять аналоги
Виноваты не устаревшие технологии, а несовершенство двоичной логики в принципе. Это можно исправить увеличивая разрядность системы, только её нельзя повышать бесконечно, иначе даже 2+2 будет вычисляться кучу времени.
Крутое видео, жаль просмотров мало
Жесть че за кодинг там такой что все неправильно делится, и то мой клькулятор нормально все делит
всмысле "вобще всё"
больше этой рубрики не будет?