-
- Отставить панику. Инструкция ASR для этого и сделана. Был неправ, вспылил. Деление и сдвиг отрицательных чисел даёт разный результат, отсюда и доп. код. Если включить оптимизацию, яр может догадаться, что число положительное (if z > 0) и выкинуть SciFi(12 знак., 01.03.2018 16:33 - 16:39)
- Некоторые компиляторы типа Watcom имеют чёткую документацию — знаковое целое сдвигается с распространением знака, беззнаковое — тупо побитно. Т. е. жёсткое приведение типа даёт детерминированное поведение. - Николай Коровин(06.03.2018 13:06)
- По моему, в любом случае, должно быть округление в меньшую сторону - отброс остатка. - misyachniy(01.03.2018 16:49)
- Должно быть округление в сторону нуля. Для положительных это отброс а для отрицательных прибавление. То что сгенерил компилятор все равно выглядит подозрительно. Может в новых редакциях C что-то подкрутили тихой сапой ? - 3m(01.03.2018 16:58)
- Нашел Борланд С++ версии 3.1. Результат следующий misyachniy(764 знак., 06.03.2018 10:19)
- Спрошу здесь. А правильно ли я умножаю целое неотрицательное число на нецелую константу (часто нужно для калибровок всяких и т.п.)? Я не профессиональный программист, прошу не сильно пинать, это я сам такое придумал. Например, надо умножить x на Yurasvs(125 знак., 05.03.2018 21:53)
- Цитата: "Для того, чтобы повысить точность перед сдвигами прибавляют к Х половину от деления. Т.е. для сдвига на 3: ((Х+4) >> 3)" - De_User(17.03.2018 00:50)
- При наличии в процессоре умножителя воспользоваться им. Или просто написать (х*((unsigned)(1.38*256))) AlexBi_(140 знак., 05.03.2018 22:21, )
- Фигасе. В школе так плохо с арифметикой, всё абиснять надо? - SciFi(05.03.2018 22:22)
- Если возник вопрос с разложением константы на 1 AlexBi_(345 знак., 06.03.2018 08:45, )
- Фигасе. В школе так плохо с арифметикой, всё абиснять надо? - SciFi(05.03.2018 22:22)
- о господи - SciFi(01.03.2018 17:01)
- Должно быть округление в сторону нуля. Для положительных это отброс а для отрицательных прибавление. То что сгенерил компилятор все равно выглядит подозрительно. Может в новых редакциях C что-то подкрутили тихой сапой ? - 3m(01.03.2018 16:58)
- Отставить панику. Инструкция ASR для этого и сделана. Был неправ, вспылил. Деление и сдвиг отрицательных чисел даёт разный результат, отсюда и доп. код. Если включить оптимизацию, яр может догадаться, что число положительное (if z > 0) и выкинуть SciFi(12 знак., 01.03.2018 16:33 - 16:39)