Благодарю за такое точное и понятное объяснение! Я рада, что вы мне попались! До вас я находила видео с разборами на эту тему, но они были все долгие и непонятные. У вас талант объяснить сложное простым языком ❤
@НикИванов-ф2к Жыл бұрын
Благодарю вас, Антон. У вас - талант объяснять. И талант блогера. Вы можете объяснять довольно скучные (для непосвященных) темы очень увлекательно. Темы роликов у вас - для меня - актуальные. Подписался на вас!
@Александр-й7б9и Жыл бұрын
Вот, мы тут восхищаемся красотой технических решений, а некоторые становятся миллионерами благодаря этим случайным циферкам после запятой 😅
@facehuggerhug2 ай бұрын
Понравилось. Отдельное спасибо за музыку на фоне :)
@ДарьяШкуренко-я2х Жыл бұрын
Прелесть какое хорошее разъяснение. Не душно и по факту!
@math-to-masses Жыл бұрын
Спасибо! ^^
@Ratmirsh Жыл бұрын
Антон, рад что наткнулся на ваш канал, очень понятно объясняете. Местами кринжанул со скетчей, может это только я такой) Продолжайте, очень интересно!
@sanchopansa8956 Жыл бұрын
Не так часто пишу комментарии, но тут не могу не заметить, что навыки объяснения у автора на отличном уровне) Не скажу, что тема сильно сложная, но непросвящённому человеку куда приятнее воспринимать такой контент с наглядными объяснениями, чем в исключительно формульном виде.
@inotak Жыл бұрын
Браво за объяснение таких вещей. Мне нравится!
@jtprogru_channel Жыл бұрын
Я хочу еще таких видосов! Это настолько круто, что хочется снова и снова!
@iljakot_tran4131 Жыл бұрын
Классный видос! А на моменте экономии бита я прям сам захотел танцевать
@МихаилКраснобаев-е1ч Жыл бұрын
Какое кайфовое объяснение
@peterl4864 Жыл бұрын
Огонь! Я прям вспоминаю уроки по С++ в десятом классе)
@-Sergey Жыл бұрын
Сложно. Но интересно. Надо будет ещё разок пересмотреть.
@kemal667 Жыл бұрын
Насчёт странного способа записи порядка: весь стандарт float основан на том, чтобы числа можно было сравнивать как целые.
@borisvalerievich5831 Жыл бұрын
Целочисленная математика наше всё
@СтаниславТимошко-и6е Жыл бұрын
Интересное видео) Было бы очень круто, если бы вы рассказали про нейросети в следующих видео!
@math-to-masses Жыл бұрын
Спасибо! Я точно расскажу об этом, как только придумаю, как это сделать без духоты :)
@rechw769 Жыл бұрын
Спасибо за видео!
@justafish_ Жыл бұрын
3:55 как по мне это наоборот более правильная и логичная форма, чем у дополнительного кода, в ней 1000 > 0000, потому что старший разряд в первом числе больше, чем во втором. Это то, как работают числа в любой системе счисления. А вот в дополнительном коде у нас почему то 0000 > 1000 (потому что старший разряд - это знак, да еще и чем он больше, тем число меньше)
@arm_128bit Жыл бұрын
Молодец, расширил мои познания, спасибо. Видео понравилось и ещё понравилось видео, где разработчики игры решили обойти использование квадратного корня с помощью хитрой конструкции. Вообщем, разбор деталей очень интересен. Может расскажешь, как компьютер проводит операцию квадратного корня?
@JamshidShoyusupov-fo1gm10 ай бұрын
Круто!!!
@ErrorsMissing Жыл бұрын
вычитать -127 нужно для хранения отрицательной экспоненты. Конечно можно было бы использовать sign бит, но тогда бы у нас экспонента лежала бы в диапазоне (-127, +127) так как два значения(10000000 и 00000000, они же +0 и -0 в десятичной) были эквивалентны. Если же мы вычитаем 127, то получаем значение экспоненты в диапазоне (-127, +128), а значит что неиспользованное значение может служит идентификатором NaN и Infinity.
@math-to-masses Жыл бұрын
Блин, это так просто и логично. Почему я сам не догадался! Спасибо!
Тем не менее (код C#) Console.WriteLine(1.4f + 2.6f); выдает в консоле 4, а не 3.9999 А Console.WriteLine(1.4f + 2.6f == 4f); выдает True.
@timurbrave Жыл бұрын
Спасибо Вам за ролик!) Скажите пожалуйста, как калькулятор, например гугловский на Андроид, записывает дробное число для дальнейших вычислений? Точнее у меня этот вопрос к следующему примеру. Последовательно делаем следующие операции: делим десять на три, нажимаем равно, умножаем результат на три и получаем 10 вместо 9,999~. Чтобы получить десять калькулятор должен отметить себе что 10 / 3 = ⅓ от 10, но как это он себе отмечает? Спасибо Вам!
@math-to-masses Жыл бұрын
Я не уверен, поскольку разных видов калькуляторов огромное множество. У меня тут есть два варианта: либо у калькулятора по-другому хранятся в памяти и в процессоре (это, кстати, логично, ведь калькулятору не нужно так же сильно ускорять вычисления, как компьютеру), либо он умеет добавлять какое-то небольшое число эпсилон, если он понимает, что такое добавление округлит число
@timurbrave Жыл бұрын
@@math-to-masses Спасибо Вам за ответ, Антон! А может у него есть что-то вроде списка случаев, когда период в десятичной дроби нужно отметить как дробную часть от целого числа.
@timurbrave Жыл бұрын
@@math-to-masses В принципе, как-то ведь калькулятор должен хранить дроби с периодом.
@timurbrave Жыл бұрын
@@math-to-masses Число эпсилон - это интересный вариант. Спасибо!
@math-to-masses Жыл бұрын
@@timurbrave я бы ставил на то, что у калькулятора дроби хранятся не как одно число с плавающей точкой, а как отдельно целый числитель и отдельно целый знаменатель. Как быть с иррациональными числами, правда, в такой парадигме - не очень понятно, не знаю. Думаю, что специалисты по транзисторам и процессорам тут подскажут подробнее
@mishkaD2310 ай бұрын
Почему же тогда в C++ при сложении двух float выдаёт 4? Получается, в наше время проблема решена уже, а ты рассказываешь что нет и всем кранты.
@ПавелМелюхин-т9ч Жыл бұрын
А про денормализованные числа?
@math-to-masses Жыл бұрын
справедливо, тут не рассказал. Вы молодец, что вспомнили :)
@zzubra8802 Жыл бұрын
Красиво
@sergeigarbar1896 Жыл бұрын
1) классно. 2) я больше не хочу быть программистом
@math-to-masses Жыл бұрын
Да наоборот же! Когда знаешь, как оно устроено, тогда столько всего классного можно напрограммировать! :)
@sergeigarbar1896 Жыл бұрын
@@math-to-masses это была шутка. если серьёпзно - я думал что операции с числами мне хватит 32Bits RAM in Digital Logic Sim #digitallogic 7 Segment Display in Digital Logic Sim и истальных видео по digital Logic Simulator . я думал что например 5.5 это + 0011 0111 х 10 -2 ( + 55 умножить на 10 в минус второй)
@SuperMario-is5rj Жыл бұрын
Эти толпы битов с удовольствием кушает процессор, а не программист. Программист щёлкает кнутом и говорит: " але-ап, добудь мне sin(3.14/2) " и кланяется 😁😁
@papacrow3854 Жыл бұрын
Хорошо объясняешь. Хотелось бы от тебя услышать, как python хранит очень большие числа. К примеру, у C++ есть предел
@Hobbitangle Жыл бұрын
python, как впрочем и C++, "большие числа" не хранит. Равно как и "малые числа" он тоже не хранит. Числа - большия и малыя - хранит компьютер. Точнее говоря, процессор, а ещё точнее говоря - математический сопроцессор (FPU). Хранит он эти числа в формате с "плавающей запятой" о чём собственно и ролик выше. Этот же сопроцессор обеспечивает базовый набор операций над числами - сложение, умножение, деление, а также вычисление элементарных функций, к которым потом и обращаются языки программирования, включая python, C++, Fortran, Basic и прочая, прочая, прочая, число им легион.
@papacrow3854 Жыл бұрын
@@Hobbitangle ну все равно как? Почему на python я могу посчитать 100! И результат выводится, а C++ в этом ограничен. Он в один момент (в зависимости от размера переменной) начнет "зацикливать расчёт" И выдаст результат в пределах своей переменной. Хотя, возможно у C++ другие задачи были, поэтому сделали так
@Hobbitangle Жыл бұрын
@@papacrow3854 "И выдаст результат в пределах своей переменной" Ой. "результат в пределах переменной". Даже не знаю как комментировать это выражение. Ладно. Пойдем другим путём. Начнём с того что ни Питон, ни C++ выражение 100! непосредственно не вычисляют. Нет такого оператора в языке, ни в том и ни в другом. "Факториал" - это есть, или точнее говоря, может быть, _функция_ которую ещё нужно определить, причём это можно сделать по разному. Например, при помощи циклического умножения - или ещё как. Что касается "результата в пределах переменной" (буду использовать твоё безграмотное выражение). значение 100! находится в пределах 10²⁰⁰ , ьчто вполне допустимое значение для числа с плавающей запятой двойной точности 10³⁰⁰ Т.е. и там и там, и в питоне и на C++ результат может быть получен "в пределах переменной" Тут вопрос только в том как составить такую функцию. Если в качестве промежуточной переменной ты будешь использовать переменную , принимающую целочисленные значения, ты получишь в итоге переполнение разрядной сетки и неопределенный результат. А если сразу использовать числа с плавающей запятой, то результат будет корректным. вот тебе код на C++: int factorial (int n) { int temp = 1; for (i=2: i
@papacrow3854 Жыл бұрын
@@Hobbitangle я написал 100! Для примера большого числа. Я не имел ввиду, что сразу вычислит
@НикитозСаныч Жыл бұрын
@@Hobbitangleну как бы, в Пайтон такой оператор есть, который вычисляет факториал
@45485 Жыл бұрын
ты на природе снимаешь?
@justafish_ Жыл бұрын
12:17 в принципе логично, (1.2345 * 10 ^ 100) + (9.999 * 10 ^ 10 ^ (-100)) примерно равно 1.2345 * 10 ^ 100
@Danil_Dm Жыл бұрын
Если честно то мне обыкновенные дроби были сложнее чем десятичные, наверное потому что я уже программировать умел когда их изучал
@nexonnera.k.a.8796 Жыл бұрын
Такое чувство когда учил десятичные роби раньше обычных:
@soyeraccount Жыл бұрын
А есть ли способ точно проводить операции с дробными числами?
@math-to-masses Жыл бұрын
Первый способ - использовать double. Второй способ - реализовать собственный формат хранения чисел, но увеличить время, затраченное на вычисление
@Александр-й7б9и Жыл бұрын
Python поддерживает тип Decimal. Подробности в PEP 327
@iamzeus1250 Жыл бұрын
Нормик
@Serhii_Volchetskyi Жыл бұрын
Хотелось б про коррекцию ошибок услшать
@АлександрИванович-я3й Жыл бұрын
Довольно странное утверждение, что в школе сложно давались десятичные дроби. Мне наоборот с десятичными было все предельно понятно и просто, а вот с простыми головная боль. С десятичными как раз всё просто. Есть целое количество (яблок) и какая-то ещё часть (яблока) в диапазоне от 0 до 1, где 0.5, это половина яблока, а 0.25 четверть и так далее. С простыми же до сих пор иногда проблемы возникают. Но может это просто я один такой "неправильный" и всем людям проще простые дроби, а с десятичными проблемы.
@yohohowowowo9471 Жыл бұрын
А я то думаю, почему в программах 0,333 и 0,666 и им подобные так часто вылезают, а оно вон что)
@wrrr1256 Жыл бұрын
в прошлом семестре на экзамене по информатике получил 5, только сейчас понял за что💀
@НикитозСаныч Жыл бұрын
Так и не сказал, а как же их хранить. То, что они там лежат так, что сам чёрт ногу сломит - это понятно. А как мне, например, воспроизвести на компьютере любой знак после запятой числа Пи?
@alex-j476 Жыл бұрын
давай еще больше инфы
@JohnJTraston Жыл бұрын
Нееее... ну ты сразу прям float. Есть еще числа с фиксированой точкой - дофига где в кодеках, DSP, микроконтроллерах используется. Есть в виде рациональных дробей, целочисленные числитель со знаменателем. Тоже много где в embedded технике используется. Да пол Exifа в таком виде записано.
@Ritefita Жыл бұрын
нафига у 1.4 и 1.6 сравнивать порядки, если он у них один? как вышло что разный?
@math-to-masses Жыл бұрын
там 1.4 и 2.6 складываются. У них разные порядки. У 1.4 и 1.6 действительно порядки одинаковые
@Ritefita Жыл бұрын
@@math-to-masses спасибо. у 1.4 и 2.6 тоже одинаковые порядки, относительно точки. Эх, надо было вовремя выключать))
@math-to-masses Жыл бұрын
@@Ritefita в десятичной системе счисления - одинаковые - у них порядок единиц (десять уже не влезает в эти числа). А в двоичной системе счисления в 1.4 влезают единица, а двойка уже не влезает. А в 2.6 влезает уже двойка. Так что 2.6 в двоичной системе на 1 порядок больше, чем число 1.4
@ЕленаКононова-ю3в Жыл бұрын
Блин, как ты мнимое число запишешь? у него же нет знака
@math-to-masses Жыл бұрын
Мнимое число в таком формате, конечно, не запишешь, это правда. Чтобы сохранить в памяти мнимое число, нужно два числа в формате флоат
@ИванВоронин-и2м Жыл бұрын
Ты втираешь мне какую-то дичь!
@nickzweng7299 Жыл бұрын
float f1 = 1.4; float f2 = 2.6; float f3; float sum_f(float ff1, float ff2) { return ff1 + ff2; } int main() { printf("Hello World %f ", (1.6+2.4)); printf("Hello World %f ", (f1+f2)); f3 = f1 + f2; printf("Hello World %f ", f3); f3 = sum_f(f1, f2); printf("Hello World %f ", f3); return 0; }
@nickzweng7299 Жыл бұрын
Hello World 4.000000 Hello World 4.000000 Hello World 4.000000 Hello World 4.000000 ...Program finished with exit code 0 Press ENTER to exit console.
@dageon3127 Жыл бұрын
ХАХАХААХА python при складывании 1.4 + 2.6 выдает 4
@alexeidubrovin5234 Жыл бұрын
Не раскрыта тема с (+/-) 0/∞/NaN !
@math-to-masses Жыл бұрын
Справедливо, надо будет дополнить
@donevil8582 Жыл бұрын
Видео крутые конечно, но обидно как-то, когда ты зрителя недоумком изображаешь.
@math-to-masses Жыл бұрын
честно говоря, здесь я показываю себя, как бы "я, который не в теме" отреагировал на "меня, который в теме" :)