Связанные сообщения
- Камент:2025-03-02
- Вопрос по CH32V003.2025-02-28
- Ну что же. Купил DHO914 за 87 тыс.2025-01-20
- [обновлено 17.04.24]купил себе домой rigol mso5074, накатил патч.
теперь он mso5354. все работает.2024-04-19
- Ещё так можно.2022-08-08
-
- int tmp = 0x040000; ADC_Data =((ADC_Data + tmp) & 0x7FFFF) - tmp; //т.е. сначала приводим все числа к числам без знака (положительным), ограничивая разрядность 18 битами, потом отнимаем константу приведения уже в 32 битах. Работает сие без условных переходов и неизбежного при этом сброса конвейера. Boвa(108 знак., 30.03.2025 13:48)
- Помню, было такое обсуждение :-) il-2(1 знак., 28.03.2025 16:02, ссылка)
- Или вот из 2012 года. Напомнило анекдот, в котором престарелый
персонаж, мучимый деменцией, исполняет супружеский долг повторно... SciFi(1 знак., 28.03.2025 16:13, ссылка)
- В анекдоте он исполнил бы и третий раз, но молодая жена возмутилась :-) - reZident(28.03.2025 16:45)
- Или вот из 2012 года. Напомнило анекдот, в котором престарелый
персонаж, мучимый деменцией, исполняет супружеский долг повторно... SciFi(1 знак., 28.03.2025 16:13, ссылка)
- if(adc_val & 0x2000) adc_val |= (0xffffffff - 0x3ffff); Cкpипaч(218 знак., 28.03.2025 14:24)
- компилятор не разобрался: SciFi(1 знак., 28.03.2025 15:02, ссылка)
- Вот POV(1 знак., 28.03.2025 14:18, картинка)
- Обсуждалось много раз. Я предпочитаю так
(((int32_t)(ADC<<(32-18)))>>(32-18)) - IBAH(28.03.2025 14:05)
- Я тоже всегда делаю так. Это вырождается в две ассемблерные команды
- LSLS и LSRS. Куда уж короче... Michael75(1 знак., Вчера, 11:24, картинка)
- Вообще-то стандарт С не обещает что при сдвиге вправо обязательно
будет происходить расширение знака, это implementation-defined. ЫЫyкпy(312 знак., Вчера, 13:32)
- И это прекрасный пример того случая, когда следует проигнорировать
стандарт. Чтобы не потерять сон, можете добавить assert_static((-1
>> 1) < 0). - SciFi(Вчера, 13:38)
- спасибо. не буду игнорировать. и пусть компилятор за меня подставит
сдвиг вместо деления. при моём зоопарке камней и компиляторов не
хочу даже думать вместо оптимизатора - Vit(Вчера, 15:04)
- Любое решение - компромисс. В данном случае потенциально возможная несовместимость принесена в жертву быстродействию и объёму кода. Michael75(401 знак., Вчера, 18:08)
- К счастью оно всё-таки defined. Поэтому один раз выяснив как именно оно определено можно не беспокоиться до перехода на другой компилятор или другую архитектуру. - ЫЫyкпy(Вчера, 13:52)
- спасибо. не буду игнорировать. и пусть компилятор за меня подставит
сдвиг вместо деления. при моём зоопарке камней и компиляторов не
хочу даже думать вместо оптимизатора - Vit(Вчера, 15:04)
- И это прекрасный пример того случая, когда следует проигнорировать
стандарт. Чтобы не потерять сон, можете добавить assert_static((-1
>> 1) < 0). - SciFi(Вчера, 13:38)
- Вообще-то стандарт С не обещает что при сдвиге вправо обязательно
будет происходить расширение знака, это implementation-defined. ЫЫyкпy(312 знак., Вчера, 13:32)
- Ну миль пардонте, Спасибо. - PeterD(28.03.2025 14:06)
- Я тоже всегда делаю так. Это вырождается в две ассемблерные команды
- LSLS и LSRS. Куда уж короче... Michael75(1 знак., Вчера, 11:24, картинка)
- int32_t from18bit(int input) { return (input << 14) >> 14; } - SciFi(28.03.2025 14:05)