-
- Когда у ARM появился 24-битный int? - lloyd(13.04.2020 15:07)
- Тю. 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)
- "i32 = i24 << 8 >> 8;"? - SciFi(13.04.2020 14:46)
- а что по поводу ? Constantin24(5 знак., 13.04.2020 21:24, ссылка)
- Спасибо, попробуем. А то я что то с битами заморочился - Constantin24(13.04.2020 14:51)
- Еще вариант: i32 = (0 - (i24 & 0x00800000ul)) | i24; - il-2(13.04.2020 14:58)
- --- - mr-x(13.04.2020 15:10)
- А i32 = (i32)i24 не? - MBedder(13.04.2020 15:04)
- +1 если i24 поддерживается компилятором и представлен именно в
int24_t. В противном случае нужно преобразование "вручную". - Nikolay_Po(13.04.2020 15:31)
- Ну раз i24 у ТС уже есть, то и его компилятор о нем уже знает - MBedder(13.04.2020 15:42)
- ответил Constantin24(4 знак., 13.04.2020 20:41, ссылка)
- скорее всего самопал из трех байт - VLLV(13.04.2020 15:43)
- Ну раз i24 у ТС уже есть, то и его компилятор о нем уже знает - MBedder(13.04.2020 15:42)
- +1 если i24 поддерживается компилятором и представлен именно в
int24_t. В противном случае нужно преобразование "вручную". - Nikolay_Po(13.04.2020 15:31)
- Еще вариант: i32 = (0 - (i24 & 0x00800000ul)) | i24; - il-2(13.04.2020 14:58)
- Когда у ARM появился 24-битный int? - lloyd(13.04.2020 15:07)