-
- Таки так и сделал. - Бapбoc(09.09.2024 13:13)
- Как-то так: int32_t result = b0 + (b1 << 8) + (b2
<< 16) + (b2 & 0x80 ? 0xff000000 : 0); - SciFi(09.09.2024 14:03)
- Если архитектура не 32 бита, то нужно привести тип b2 к 32-бит.
Иначе в тип INT16 по-умолчанию не поместится. - Nikolay_Po(09.09.2024 15:34)
- Хуже того, (b1 << 8) может стать отрицательным числом. Да, есть такое. - SciFi(09.09.2024 15:42)
- Теперь посмотрите во что оно развернется в асме. :-) - Boвa(09.09.2024 14:07)
- А я так и знал, что ассемблер головного мозга - смертельно опасная
болезнь :-) - SciFi(09.09.2024 14:07)
- Гы ищо вариант на входе: в Х число из 24 битов со знаком помещенное
в 32 битный int с нулями в старшем байте, на выходе - 32 битный int
: Х=((X+0x00800000) & 0x00FFFFFF) - 0x00800000) Конечно же это для
любителей крестов и для 32 разрядников. :-) - Boвa(09.09.2024 15:03 - 15:11)
- Да-да, я видел компиляторы для восьмибитников. Они тупые, чо уж
там. А я бы специально вот такое им подсовывал, пусть скрипят
ржавыми шестерёнками. Если байты во флеше не кончились, пусть
будет. За байты уплочено! :-) - SciFi(09.09.2024 15:05)
- Кровь, кишки и мелкие индейцы без всяких если. Boвa(318 знак., 10.09.2024 12:21)
- Да-да, я видел компиляторы для восьмибитников. Они тупые, чо уж
там. А я бы специально вот такое им подсовывал, пусть скрипят
ржавыми шестерёнками. Если байты во флеше не кончились, пусть
будет. За байты уплочено! :-) - SciFi(09.09.2024 15:05)
- наоборот, спасает от ожирения кода. - =L.A.=(09.09.2024 14:53)
- Спасались от ожирения, а сгубил Альцгеймер с Паркинсоном :-) - SciFi(09.09.2024 14:54)
- Гы ищо вариант на входе: в Х число из 24 битов со знаком помещенное
в 32 битный int с нулями в старшем байте, на выходе - 32 битный int
: Х=((X+0x00800000) & 0x00FFFFFF) - 0x00800000) Конечно же это для
любителей крестов и для 32 разрядников. :-) - Boвa(09.09.2024 15:03 - 15:11)
- А я так и знал, что ассемблер головного мозга - смертельно опасная
болезнь :-) - SciFi(09.09.2024 14:07)
- Если архитектура не 32 бита, то нужно привести тип b2 к 32-бит.
Иначе в тип INT16 по-умолчанию не поместится. - Nikolay_Po(09.09.2024 15:34)
- Как-то так: int32_t result = b0 + (b1 << 8) + (b2
<< 16) + (b2 & 0x80 ? 0xff000000 : 0); - SciFi(09.09.2024 14:03)
- Таки так и сделал. - Бapбoc(09.09.2024 13:13)