
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.75] |
![]() |
|
Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
С математически правильной точки зрения, если разделить (-5) на 3, получится в остатке +1. А теперь попробуйте вычислить это на компьютере. Получится -2. Это имеет историческую причину: разрабатывая процессор x86, инженеры Intel реализовали именно такой, "неправильный" способ деления. Может быть, они плохо знали математику ?
![]() В таком виде деление целых чисел перекочевало в большинство языков программирования. И, наверное, для совместимости, будет тянуться и дальше. А удобно ли оно ? Лично мне ни разу не встретилась ситуация, когда требовалась бы именно такая интерпретация деления отрицательных чисел. Конечно, ситуация исправляется написанием своей процедуры деления, возвращающей всегда неотрицательный остаток. Так и делаю. Опишите случаи, когда Intel-овское деление оказалось для Вас удобным. И ответьте на вопрос, каким оно было бы, если бы Вы разрабатывали процессор. |
Сообщ.
#2
,
|
|
|
Я вобще не стыкался с делением на асме, хоть програмирую на ньом, и не хочу
стыкатся. ![]() |
Сообщ.
#3
,
|
|
|
если делить математически, то получим вот что:
5 / 2 = 2 -5 / -2 = 3 хотя -5/-2 = 5/2 в топку такое деление =) |
Сообщ.
#4
,
|
|
|
Думаю, что понятие математической правильности здесь очень условно..
Все-таки, более естественно, когда частное от деления -5 на 3 равно -1, а не -2. И еще естественно, когда n == m*(n/m) + (n%m) - а иное чревато ошибками. |
Сообщ.
#5
,
|
|
|
n == m*(n/m) + (n%m)
эта формула будет верна для любого вида деления =) |
Сообщ.
#6
,
|
|
|
Цитата DEiL @ 27.06.04, 20:10 если делить математически, то получим вот что: 5 / 2 = 2 -5 / -2 = 3 хотя -5/-2 = 5/2 Если мне не изменяет память, операция целочисленного деления вообще не определена для отрицательного знаменателя. В случае (-5)/(-2), скорее всего, уместнее перевести это дело в вещественные числа - там хотя бы будет какой-то смысл от такой операции. Если числа делятся нацело, то результат очевиден. А если нет - спорный момент, как нужно считать. И зачем считать, где вообще (при решении какой задачи) такое деление будет осмысленным ? Добавлено в : Цитата NU_2000 @ 27.06.04, 19:47 Я вобще не стыкался с делением на асме Целочисленное деление в Си или Паскале ничем не отличается от деления на ассемблере, поскольку компилятор просто подставляет инструкцию idiv Деление двух знаковых 32-битных переменных даст тот же результат. |
Сообщ.
#7
,
|
|
|
Цитата На Visual C++ я только что попробывал, у меня все нормально делиться Целочисленное деление в Си или Паскале ничем не отличается от деления на ассемблере, поскольку компилятор просто подставляет инструкцию idiv |
Сообщ.
#8
,
|
|
|
Я так подозреваю, что то, что Вы назвали математическим делением - это какая то самодеятельность.
Цитата (-5) на 3, получится в остатке +1. ??? это с чего это? |
Сообщ.
#9
,
|
|
|
Цитата С математически правильной точки зрения, если разделить (-5) на 3, получится в остатке +1. А теперь попробуйте вычислить это на компьютере. Получится -2. (-1)*3 +(-2) = -5, так что в интел правильные математики сидят:) |
Сообщ.
#10
,
|
|
|
Чёткое математическое определение целочисленного деления можно найти в любом учебнике по введению в теорию чисел, первая глава - арифметика модульных остатков.
Но на самом деле главное - не соответствие какому-то учебнику, а удобство в использовании. Приведите хоть один пример, когда отрицательный остаток полезен. Реальную задачу, плз. |
![]() |
Сообщ.
#11
,
|
|
Цитата CD_Eater, 28.06.04, 17:09 Приведите хоть один пример, когда отрицательный остаток полезен. В бухгалтерии это называеться "красное сальдо" cо всеми вытекающими последствиями. |
![]() |
Сообщ.
#12
,
|
|
Цитата Не надо... не надо DEiL, 27.06.04, 22:10 если делить математически, то получим вот что: 5 / 2 = 2 -5 / -2 = 3 хотя -5/-2 = 5/2 в топку такое деление =) ![]() -5 / -2 = 2 (остаток -1) ![]() Цитата См. мессагу potor'а CD_Eater, 28.06.04, 19:09 Приведите хоть один пример, когда отрицательный остаток полезен. |
Сообщ.
#13
,
|
|
|
Цитата ..а удобство в использовании очень удобно заранее знать, что же имеют в виду под понятием "остаток от деления" всё остальное человечество. |
Сообщ.
#14
,
|
|
|
Действительно, математически остаток - число положительное.
-5 / -2 = 3, остаток 1 http://sbiryukova.narod.ru/Arifm/Delim/Delim_ost_5.htm http://www.3ka.mipt.ru/vlib/books/Mathemat...erTheory/1.html http://katpop.narod.ru/vmsch/7klass/2_2.htm http://www.91.ru/education/matan/Listok04-1.htm |
Сообщ.
#15
,
|
|
|
Цитата -5 / -2 = неполное частное -3, остаток 1 ну в данном случае частное будет 2, а отаток 1 я думаю ты имел ввиду -5/2 тогда так как ты и говоришь, но меня лично не устроило бы такое частное |