-
- Ну так, опять же, в 8-битниках сам по себе флаг переноса тоже не лезет. Для этого требуются специальные команды. Или нет? - Bill(27.02.2015 11:16)
- Да. Там есть логический сдвиг и арифметический сдвиг :) - Звероящер(27.02.2015 16:32)
- "Буду краток": циклического сдвига он тоже не знает. Вот и получили с другой стороны ноль. - Николай Коровин(27.02.2015 02:00)
- не знает - zeleny(26.02.2015 23:36, ссылка, картинка)
- Азбука в картинках! Ещё немного, и сиську снова будем сосать! - SciFi(27.02.2015 00:44)
- Кстати о сиськах. Объясните пожалуйста неучу, что обозначают буквы IO и другие подобные префиксы перед объявлением переменных. На АВРах вполне без этого обходился (применял компилятор ImageCraft), а в Кейле это встречается сплошь и рядом, и я, к Yurasvs(39 знак., 02.03.2015 22:29)
- в хедерах лень посмотреть? Например в GCC есть куча атрибутов - можно поместить в нужный сегмент или в регистр, есть архитектурно-зависимые аттрибуты и т.д. Может и в Кейле так же. - zeleny(03.03.2015 00:28 - 00:30)
- Просто это какие-то дурачки решили, что IO лучше, чем volatile. - SciFi(02.03.2015 22:32)
- Подозреваю, что писатели средств разработки потеряли надежду, что публика когданить привыкнет использовать volatile и просто решили уменьшись количество обращений в службу поддержки хотя бы таким способом. Кернигануричи нужно было сделать все Codavr(109 знак., 02.03.2015 23:10)
- То есть IO и volatile это синонимы? Volatile ставлю всегда, если переменную может изменить прерывание. В остальных случаях не ставлю. - Yurasvs(02.03.2015 23:57)
- Всё-таки IO намекает на аппаратный регистр, ИМХО. Хотя хз, что конкретно они имели в виду. Вот я и говорю, писали бы лучше volatile и не пудрили людям мозги. - SciFi(03.03.2015 07:22)
- Плодят сущности. - Codavr(03.03.2015 09:17)
- А если не прерывание может изменить? volatile нужно делать любой объект котороый может быть изменен вне контекста. - Codavr(03.03.2015 00:00 - 00:04)
- А ты не прбовал определение в заголовочном файле посмотреть? - Codavr(02.03.2015 23:58)
- Всё-таки IO намекает на аппаратный регистр, ИМХО. Хотя хз, что конкретно они имели в виду. Вот я и говорю, писали бы лучше volatile и не пудрили людям мозги. - SciFi(03.03.2015 07:22)
- То есть IO и volatile это синонимы? Volatile ставлю всегда, если переменную может изменить прерывание. В остальных случаях не ставлю. - Yurasvs(02.03.2015 23:57)
- Подозреваю, что писатели средств разработки потеряли надежду, что публика когданить привыкнет использовать volatile и просто решили уменьшись количество обращений в службу поддержки хотя бы таким способом. Кернигануричи нужно было сделать все Codavr(109 знак., 02.03.2015 23:10)
- Гы:) Напомнило Шона О'Фаолейна "И вновь?" - Vit(27.02.2015 07:40)
- Кстати о сиськах. Объясните пожалуйста неучу, что обозначают буквы IO и другие подобные префиксы перед объявлением переменных. На АВРах вполне без этого обходился (применял компилятор ImageCraft), а в Кейле это встречается сплошь и рядом, и я, к Yurasvs(39 знак., 02.03.2015 22:29)
- Азбука в картинках! Ещё немного, и сиську снова будем сосать! - SciFi(27.02.2015 00:44)
- А тут нечему лезть, вот и получается ноль. Не понимаю Вашего недоумения. - nanorobot(26.02.2015 23:12)
- вот и говорю - будем иметь. :-) - Лагунов(03.03.2015 05:58)
- Советую почитать в учебнике/справочнике, как работает сдвиг в языке Си. Ну и просто почитать учебник/справочник. - SciFi(26.02.2015 17:57)
- получается, что это не сдвиг, а умножение/деление на 2. Будем иметь в виду.... - Лагунов(26.02.2015 18:04)
- С делением сдвигом сложнее. Там слева при сдвиге знакового отрицательного числа вылезает знак. Распространение знака называется. - Олдфаг(27.02.2015 00:57, )
- Причём вылезет знак или нет - это "implementation defined". Вот так вот. Бегите и прячьтесь в своём сраном ассемблере. - SciFi(27.02.2015 00:59)
- :))))))))))))))) ali00ff(239 знак., 18.03.2015 13:31)
- Интересно, реально бывает ли сдвиг вправо не арифметическим для знаковых? - Andreas(27.02.2015 09:49)
- А почему нет? Нужно только в операторе сдвига указать явное преобразование, типа Bill(35 знак., 27.02.2015 11:20)
- Это понятно. Вопрос про "неопределенное поведение", которое по факту вполне определенное. - Andreas(27.02.2015 13:53)
- Применительно к данному случаю "неопределенного поведения" не встречал. Здесь как раз все определено полностью. - Bill(27.02.2015 15:40)
- Рыскал по гуглю - не нашёл. Все говорят, что видели только арифметический сдвиг. Зато по стандарту деление на степень двойки гарантированно работает: x /= (1 << N). - SciFi(27.02.2015 14:07)
- Это понятно. Вопрос про "неопределенное поведение", которое по факту вполне определенное. - Andreas(27.02.2015 13:53)
- А почему нет? Нужно только в операторе сдвига указать явное преобразование, типа Bill(35 знак., 27.02.2015 11:20)
- Обычно если unsigned int, то заполняется нулём, а если signed int -- старшим битом. Увы, не стандартизовано, хотя очень правильная мысль. - Николай Коровин(27.02.2015 02:01)
- Причём вылезет знак или нет - это "implementation defined". Вот так вот. Бегите и прячьтесь в своём сраном ассемблере. - SciFi(27.02.2015 00:59)
- A что на асме сдвиг влево - не умножение на 2? - Apтём(26.02.2015 18:10)
- зависит от флага переноса или содержимого старшего бита в байте. - Лагунов(03.03.2015 05:57)
- Ну у вас и асм! Это называется циклический сдвиг. А бывают и не циклические, а также с битом переноса или без. Также арифметические и логические. Это где так мало сдвигов насыпали? авр? - SciFi(03.03.2015 07:26)
- Не надо на авр бочку катить - есть там такие сдвиги! - Apтём(03.03.2015 11:04)
- это в Zilog eZ8Encore. Там и арифметический, и циклический (как через перенос так и мимо него), и логический. До чего мне нравится система команд ядра eZ8Encore... - Лагунов(03.03.2015 08:11)
- Да. Когда работал с Zilog'ом, то система команд оставила самые приятные впечатления. Одни теневые регистры чего стоили. - Звероящер(03.03.2015 08:45)
- Ну у вас и асм! Это называется циклический сдвиг. А бывают и не циклические, а также с битом переноса или без. Также арифметические и логические. Это где так мало сдвигов насыпали? авр? - SciFi(03.03.2015 07:26)
- зависит от флага переноса или содержимого старшего бита в байте. - Лагунов(03.03.2015 05:57)
- С делением сдвигом сложнее. Там слева при сдвиге знакового отрицательного числа вылезает знак. Распространение знака называется. - Олдфаг(27.02.2015 00:57, )
- получается, что это не сдвиг, а умножение/деление на 2. Будем иметь в виду.... - Лагунов(26.02.2015 18:04)
- Ну так, опять же, в 8-битниках сам по себе флаг переноса тоже не лезет. Для этого требуются специальные команды. Или нет? - Bill(27.02.2015 11:16)