-
- Тю. Systick, если так уж нужен пример. Да, я догадываюсь про знак. - SciFi(13.04.2020 15:20)
- Нет у тебя навыков телепата :-) Похоже, человек хочет 3-байтовое
знаковое преобразовать в 4-байтовое. Непонятно только, причем тут
ARM :-) - il-2(13.04.2020 15:19)
- микросхема присылает 24битные int подряд. вытаскиваю их в 32битные,
чтобы дальше обработать - Constantin24(13.04.2020 20:38)
- А, знакомая тема. Самый гемор в знаковых числах. Но вообще можно
сделать логический сдвиг влево на 8 и арифметический вправо на
восемь. Или не делать - lloyd(13.04.2020 20:46)
- Как по мне, то проще всего написать человеческим языком С : i32 =
i24&0x7fffff; if (i24&0x800000) i32 = -i32; - VLLV(13.04.2020 21:17)
- Неправильно. Нужно только расширить знак. Обращать число при
установленном ст. бите не нужно!!! - il-2(14.04.2020 07:24)
- Что такое "обращать"? - VLLV(14.04.2020 08:13)
- То, что ты делаешь при установленном старшем бите в своем примере я
назвал "обращать". Короче - не правильно так. - il-2(14.04.2020 12:57)
- Ну какой же это оборотень, если анализируется старший бит в i24, а
меняется в i32. Правда не понимаю, в чем проблема. Как правильно? - VLLV(14.04.2020 13:37)
- i32 = (i24 & 0x800000) ? i24 - 0x800000 : i24; - SciFi(14.04.2020 14:00)
- Каким образом получится отрицательное i32 ? - VLLV(14.04.2020 14:58)
- Точно, нужно так: i32 = (i24 & 0x800000) ? i24 - 0x1000000 : i24; - SciFi(14.04.2020 15:05)
- А вот четвертый вариант: i32 = (i24 & 0x800000) ? i24 | 0xFF000000
: i24; Кто выдаст пятый ? :-) - il-2(14.04.2020 15:23)
- i32 = i24 - ((i24 & 0x800000) << 1); - SciFi(14.04.2020 15:34)
- Шестой. Мне аж самому понравился :-) i32 = (i24 ^ 0xFF800000) +
0x00800000; - il-2(14.04.2020 16:33)
- Да их тут тьма... 256 вариантов на ту-же тему: il-2(162 знак., 14.04.2020 16:42)
- О_о. А ведь ничто не предвещало... - SciFi(14.04.2020 16:39)
- Это все коронавирус :-) Скоро придумаем как в 1 бите 3 значения хранить :-) - il-2(14.04.2020 16:45)
- Шестой. Мне аж самому понравился :-) i32 = (i24 ^ 0xFF800000) +
0x00800000; - il-2(14.04.2020 16:33)
- i32 = i24 - ((i24 & 0x800000) << 1); - SciFi(14.04.2020 15:34)
- А вот четвертый вариант: i32 = (i24 & 0x800000) ? i24 | 0xFF000000
: i24; Кто выдаст пятый ? :-) - il-2(14.04.2020 15:23)
- Точно, нужно так: i32 = (i24 & 0x800000) ? i24 - 0x1000000 : i24; - SciFi(14.04.2020 15:05)
- Каким образом получится отрицательное i32 ? - VLLV(14.04.2020 14:58)
- i32 = (i24 & 0x800000) ? i24 - 0x800000 : i24; - SciFi(14.04.2020 14:00)
- Ну какой же это оборотень, если анализируется старший бит в i24, а
меняется в i32. Правда не понимаю, в чем проблема. Как правильно? - VLLV(14.04.2020 13:37)
- То, что ты делаешь при установленном старшем бите в своем примере я
назвал "обращать". Короче - не правильно так. - il-2(14.04.2020 12:57)
- Что такое "обращать"? - VLLV(14.04.2020 08:13)
- нужно проверить, что быстрее. Для более человеческого языка можно
обернуть в функцию. - Constantin24(13.04.2020 21:27)
- Оптимизация все нивелирует, у меня единственный критерий остался - чтобы самому было понятно. - VLLV(13.04.2020 21:45)
- Быстрее? Почему все куда-то торопятся? "Спешка нужна при ловле блох"© - SciFi(13.04.2020 21:41)
- Неправильно. Нужно только расширить знак. Обращать число при
установленном ст. бите не нужно!!! - il-2(14.04.2020 07:24)
- Как по мне, то проще всего написать человеческим языком С : i32 =
i24&0x7fffff; if (i24&0x800000) i32 = -i32; - VLLV(13.04.2020 21:17)
- А, знакомая тема. Самый гемор в знаковых числах. Но вообще можно
сделать логический сдвиг влево на 8 и арифметический вправо на
восемь. Или не делать - lloyd(13.04.2020 20:46)
- микросхема присылает 24битные int подряд. вытаскиваю их в 32битные,
чтобы дальше обработать - Constantin24(13.04.2020 20:38)