Развесёлые диалоги о науке, квази и супер научные! |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
Развесёлые диалоги о науке, квази и супер научные! |
![]()
Сообщение
#941
|
|
![]() Создатель миров ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 4015 Регистрация: 17.10.2013 Вставить ник Цитата ![]() |
|
|
|
![]()
Сообщение
#942
|
|
![]() Император Вселенной (и.о. тирана) ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 13490 Регистрация: 7.8.2013 Вставить ник Цитата ![]() |
Лучшая система координат это хлеб и колбаса с точкой пересечения на масле!
|
|
|
Гость_Сардо Нумспа_* |
![]()
Сообщение
#943
|
Гости Цитата ![]() |
|
|
|
![]()
Сообщение
#944
|
|
![]() Создатель миров ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 4015 Регистрация: 17.10.2013 Вставить ник Цитата ![]() |
|
|
|
![]()
Сообщение
#945
|
|
![]() Житель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 9369 Регистрация: 18.11.2014 Вставить ник Цитата ![]() |
|
|
|
![]()
Сообщение
#946
|
|
![]() Император Вселенной (и.о. тирана) ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 13490 Регистрация: 7.8.2013 Вставить ник Цитата ![]() |
|
|
|
![]()
Сообщение
#947
|
|
![]() Создатель миров ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 4015 Регистрация: 17.10.2013 Вставить ник Цитата ![]() |
|
|
|
![]()
Сообщение
#948
|
|
![]() безграмадный сНежный котЭ ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 12427 Регистрация: 4.6.2011 Вставить ник Цитата ![]() |
Насколько я знаю компьютер знает лишь одну операцию — суммирование, все остальное находится через определенные алгоритмы суммирования. Вот мне и стало интересно, как выглядят эти алгоритмы. Особенно корень, неужели когда компьютер извлекает корень, идет перебор, пока искомое значене не подтвердится? Или там чето очень хитрое используется?
|
|
|
![]()
Сообщение
#949
|
|
Мастер интриги ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 644 Регистрация: 6.11.2012 Вставить ник Цитата ![]() |
|
|
|
![]()
Сообщение
#950
|
|
![]() безграмадный сНежный котЭ ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 12427 Регистрация: 4.6.2011 Вставить ник Цитата ![]() |
Да нет, АЛУ любого современного компьютера умеет и складывать, и вычитать, и умножать, и делить, и ещё кое-что. Как? В первоначальном алгоритме все равно заложенно суммирование, само по себе символьное умножение не несет функцию умножения, это вот люди понимают, что надо делать при умнодении, компьютер этого без алгоритма не ведает. |
|
|
![]()
Сообщение
#951
|
|
![]() Император Вселенной (и.о. тирана) ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 13490 Регистрация: 7.8.2013 Вставить ник Цитата ![]() |
Насколько я знаю компьютер знает лишь одну операцию — суммирование Строго говоря, он и этого не умеет)) По определению компьютер имеет 1 базовую операцию - 1 + 1 с учетом знака и формированием признака переполнения разряда. На практике же все числа внутри компьютера представлены в вещественной форме. В зависимости от величины или условий это может быть число с плавающей запятой, е в степени и т.п. Целых чисел как таковых в компьютере нет, они получаются путем преобразований при выводе. Поэтому по факту при вычислениях 1 + 1 не равно 2, 2 * 2 не равно 4. Это будет дробь, приближающаяся к правильному значению. Но такая погрешность есть величина постоянная, обусловленная конструкцией процессора, и при вычислениях вводится поправка на нее. Но все равно, при работе с очень малыми числа и очень большими, комп дает изрядную погрешность. Зато универсальность вычислений во всех случаях. Для работы с малыми и большими числами есть специальные алгоритмы и даже специальные аппаратные решения. Но комп редко тупо складывает единицы. Существуют определенные приемы и алгоритмы, позволяющие ускорить процедуры. Например надо умножить 1 на 1000. Складывать 1000 раз единицу необязательно, можно просто переместить эту единицу из первого разряда в третий, т.е. сделать максимум 3 операции вместо 1000. Вот мне и стало интересно, как выглядят эти алгоритмы. Алгоритм - это способ решения задачи. Дать подзатыльник отличнику и списать у него - это тоже алгоритм) Особенно корень, неужели когда компьютер извлекает корень, идет перебор, пока искомое значене не подтвердится? Или там чето очень хитрое используется? Можно и перебором, но на самом деле есть более быстрые алгоритмы. Есть чисто математические, например разложение в ряд Тейлора, есть специально написанные для компьютеров. Вопрос выбора здесь решается из 2 условий: точности результата и затраченного времени. По времени для компов чаще всего важно сколько повторов (итераций) требуется для получения результата, поскольку все такие алгоритмы вычисляются в цикле. Именно количество повторов цикла определяет основные затраты времени. |
|
|
![]()
Сообщение
#952
|
|
![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1717 Регистрация: 14.12.2013 Вставить ник Цитата ![]() |
Цитата Ошибка. Открываем классику для студента: У.Столлингс "Структурная организация и архитектура компьютерных систем" 5-е издание. На 420 странице в главе "Характеристики набора машинных команд" уже встречаем мнемонику:сложение, вычитание, умножение, деление.. А уже в главе 9.5 (стр 448) :типы операций в наборе команд процессоров пень2 и повер пи си встречаем, помимо логических и поразрядных - сложение, вычитание, умножение( без учета знаков) и деление с учетом знака. |
|
|
![]()
Сообщение
#953
|
|
![]() Император Вселенной (и.о. тирана) ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 13490 Регистрация: 7.8.2013 Вставить ник Цитата ![]() |
Ошибка. Открываем классику для студента: У.Столлингс "Структурная организация и архитектура компьютерных систем" 5-е издание. На 420 странице в главе "Характеристики набора машинных команд" уже встречаем мнемонику:сложение, вычитание, умножение, деление.. А уже в главе 9.5 (стр 448) :типы операций в наборе команд процессоров пень2 и повер пи си встречаем, помимо логических и поразрядных - сложение, вычитание, умножение( без учета знаков) и деление с учетом знака. Не путайте команды процессора с работой регистров. Команда процессора это целая программа, только жестко прописанная для конкретного типа процессора и может содержать десятки, сотни и тысячи элементарных аппаратных действий. ЗЫ Кстати как раз на уровне команд процессора решается большинство алгоритмов вычислений, например умножение, деление и т.д. |
|
|
![]()
Сообщение
#954
|
|
![]() безграмадный сНежный котЭ ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 12427 Регистрация: 4.6.2011 Вставить ник Цитата ![]() |
Строго говоря, он и этого не умеет)) По определению компьютер имеет 1 базовую операцию - 1 + 1 с учетом знака и формированием признака переполнения разряда. На практике же все числа внутри компьютера представлены в вещественной форме. В зависимости от величины или условий это может быть число с плавающей запятой, е в степени и т.п. Целых чисел как таковых в компьютере нет, они получаются путем преобразований при выводе. Поэтому по факту при вычислениях 1 + 1 не равно 2, 2 * 2 не равно 4. Это будет дробь, приближающаяся к правильному значению. Но такая погрешность есть величина постоянная, обусловленная конструкцией процессора, и при вычислениях вводится поправка на нее. Но все равно, при работе с очень малыми числа и очень большими, комп дает изрядную погрешность. Зато универсальность вычислений во всех случаях. Для работы с малыми и большими числами есть специальные алгоритмы и даже специальные аппаратные решения. Но комп редко тупо складывает единицы. Существуют определенные приемы и алгоритмы, позволяющие ускорить процедуры. Например надо умножить 1 на 1000. Складывать 1000 раз единицу необязательно, можно просто переместить эту единицу из первого разряда в третий, т.е. сделать максимум 3 операции вместо 1000. Алгоритм - это способ решения задачи. Дать подзатыльник отличнику и списать у него - это тоже алгоритм) Можно и перебором, но на самом деле есть более быстрые алгоритмы. Есть чисто математические, например разложение в ряд Тейлора, есть специально написанные для компьютеров. Вопрос выбора здесь решается из 2 условий: точности результата и затраченного времени. По времени для компов чаще всего важно сколько повторов (итераций) требуется для получения результата, поскольку все такие алгоритмы вычисляются в цикле. Именно количество повторов цикла определяет основные затраты времени. Вот возьмем стандартный калькулятор, как он считает? Через ряд Тейлора дроби? Я про обычный настольный кальк. Блин, кто это придумал или гений или безумец наркоман, честно я мало чего понял из вашего ответа :-) мне бы попроще обьяснение :-) |
|
|
![]()
Сообщение
#955
|
|
![]() Злостный рецедивист-невосхищенец ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 4608 Регистрация: 10.11.2012 Вставить ник Цитата Из: Мать городов русских ![]() |
Целых чисел как таковых в компьютере нет, они получаются путем преобразований при выводе. Поэтому по факту при вычислениях 1 + 1 не равно 2, 2 * 2 не равно 4. Ну типа Я Простите - но вы бредите. Большинство современных компов построены на основе т.н. "Булевой алгебры" (бинарной или двоичной логике по другому) Это как раз сугубо целочисленная математика в которой только два числа "0" и "1" так что 1+1=01 а 2*2=4 выглядит как 01*01=001 В этой системе счисления любое целое и не цлое число записывается как разложение в ряд по степеням двойки. т.е. ряд чисел выглядит как 0, 2^0=1, 2^2=4 Видемо отсюда и протекает заблуждение Манула - двоичное число в десятичное действительно переводится сложением степеней двойки например 5=101=2^0+0^1+2^2=1+0+4=5 но это только преобразование в понятный человеку "код" вычисления впоне себе идут в "своих" операциях В первоначальном алгоритме все равно заложено суммирование, само по себе символьное умножение не несет функцию умножения Наоборот умножение двоичных чисел - простейшая с точки зрения реализации операция. Обычный "базис" (то есть минимально достаточный) набор операций составляет следующие: "&" "and" - логическое умножение "or" - логическое или "not" - отрицание (вернее инверсия) С их то помощью и реализуется вся логика(на самом деле бинарная логика возможна даже на одной операции "стрелка пирса", "штрих шеффера", "и-не" "или-не" - но это приводит к проблемам понимания со стороны человека и усложнению схем), хотя есть и другие варианты. К тому же внутри компа для облегчения вычислений могут быть специализированные устройства построенные даже на отличных от "цифры" принципах. сложение, вычитание, умножение( без учета знаков) и деление с учетом знака. Язык программирования в данном случае не показатель, как и набор машинных команд. Дело в том что конструкции языка могут быть реализованы как программно (деление больших чисел например точно требует такой реализации) - встроенными процедурами, так и аппаратно - встроенными в процессор или Со-процессор схемами. Мы же тут вроде как об элементарной базе говорим. Не? |
|
|
![]()
Сообщение
#956
|
|
![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1717 Регистрация: 14.12.2013 Вставить ник Цитата ![]() |
Цитата Не путайте команды процессора с работой регистров. Команда процессора это целая программа, только жестко прописанная для конкретного типа процессора и может содержать десятки, сотни и тысячи элементарных аппаратных действий. Цитата ЗЫ Кстати как раз на уровне команд процессора решается большинство алгоритмов вычислений, например умножение, деление и т.д. Вот вы меня сейчас заставил опять лезть в шкаф к книжкам... Вам не стыдно? )))) Цитата ЗЫ Кстати как раз на уровне команд процессора решается большинство алгоритмов вычислений, например умножение, деление и т.д. Да, конечно, вы только что меня раскритиковали по этому поводу ))))
|
|
|
![]()
Сообщение
#957
|
|
![]() безграмадный сНежный котЭ ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 12427 Регистрация: 4.6.2011 Вставить ник Цитата ![]() |
Al, вы меня не поняли. Как умножают в двоичной системе я знаю. Я не понимаю, как запрограмировали компьютер умножать. Сложение это очевидная операция. А вот умножение, деление, возведение в степень, корень, логарифмы уженет. Я спрашиваю именно о базовом уровне программирования.
Вот хуть тресни, но 1*10=10 машина не сможет воспроизвести, без некого алгоритма или особой формулы. Ну допустим машина десять раз сложит еденицу, это очевидно. А вот с корнем как? Ладно хрен с этим компьютером, как считает калькулятор???? |
|
|
![]()
Сообщение
#958
|
|
Создатель миров ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 2853 Регистрация: 2.10.2012 Вставить ник Цитата ![]() |
Вот возьмем стандартный калькулятор, как он считает? Через ряд Тейлора дроби? Я про обычный настольный кальк. Блин, кто это придумал или гений или безумец наркоман, честно я мало чего понял из вашего ответа :-) мне бы попроще обьяснение :-) Узнайте что такой бит,байт, регистр, Булеву логику, И, ИЛИ, Исключаещее ИЛИ. Потому выучите ассемблер - низкоуровневый язык программирования(который наглядно дает представление как компьютер все это делает). Можно простой пиковский ассемблер в тридцать пять команд. И поймете эту мудрость, как компьютр страшно простыми действиями соединяя их решает такие грандиозные задачи. Если собрались выучить программирование на высокоуровневом языке: типа С++ или Явы - то как работает комп никогда не поймете. Программировать сможете и можете даже программистом-гуру стать, но как внутри все это работает без ассемблера и работы на уровне железа, не догоните. Это вам и не понадобится. Куча народа работает так и пишут игры, программы получая нехилые бабки и не имея понятия как это происходит на низовом уровне. |
|
|
![]()
Сообщение
#959
|
|
![]() безграмадный сНежный котЭ ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 12427 Регистрация: 4.6.2011 Вставить ник Цитата ![]() |
Узнайте что такой бит,байт, регистр, Булеву логику, И, ИЛИ, Исключаещее ИЛИ. Потому выучите ассемблер - низкоуровневый язык программирования(который наглядно дает представление как компьютер все это делает). Можно простой пиковский ассемблер в тридцать пять команд. И поймете эту мудрость, как компьютр страшно простыми действиями соединяя их решает такие грандиозные задачи. Если собрались выучить программирование на высокоуровневом языке: типа С++ или Явы - то как работает комп никогда не поймете. Программировать сможете и можете даже программистом-гуру стать, но как внутри все это работает без ассемблера и работы на уровне железа, не догоните. Это вам и не понадобится. Куча народа работает так и пишут игры, программы получая нехилые бабки и не имея понятия как это происходит на низовом уровне. Мне не интересно программирование, меня интересует лишь один вопрос, причем хотелось бы получить конкретный ответ, как компьютер умножает, находит корегь и т.п. Через сложение, подбором? |
|
|
![]()
Сообщение
#960
|
|
![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1717 Регистрация: 14.12.2013 Вставить ник Цитата ![]() |
Цитата Я не понимаю, как запрограмировали компьютер умножать. Блин, первоначально алгоритм Бута. |
|
|
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 25.7.2025, 1:06 |