jcxz 217 8 марта Опубликовано 8 марта · Жалоба 44 минуты назад, repstosw сказал: Использую ваш способ. И на счёт скачков фазы тоже разобрался: ключевое слово - unwrap. Проще все данные сдвинуть на 25 влево и работать с такими данными (left-aligned). Будет проще по арифметике. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 23 8 марта Опубликовано 8 марта · Жалоба On 3/8/2024 at 12:04 PM, jcxz said: Это одинаковое в том плане, что и то и другое - неверно. Читайте классику - Преобразования из целочисленных типов со знаком: Quote Когда целое число со знаком преобразуется в целое число или тип с плавающей запятой, значение не изменяется, если оно представлено в результирующем типе. При преобразовании целого числа со знаком в целое число большего размера значение расширяется со знаком. То есть, если нужно преобразовать 7-битное число со знаком в 8-битное число со знаком, то нужно просто скопировать старший бит 7-битного числа в старший бит 8-битного числа. Младшие 7 бит исходного числа (включая знак) копируются в 8-битное число без изменений. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 217 8 марта Опубликовано 8 марта · Жалоба 1 час назад, blackfin сказал: То есть, если нужно преобразовать 7-битное число со знаком в 8-битное число со знаком, то нужно просто скопировать старший бит 7-битного числа в старший бит 8-битного числа. Младшие 7 бит исходного числа (включая знак) копируются в 8-битное число без изменений. Дальше то что? Как выглядят и как обрабатываются данные в регистрах 32-разрядного CPU - имеете представление? А в этих регистрах, если кладёте туда 7-и или 8-и битное значение (в младшие биты), то знаковый бит должен быть распространён вверх до 31-го бита включительно. Иначе получите проблемы при арифметических операциях. Что и наблюдалось у ТС. Да, компилятор перед каждой операцией с 8-битными знаковыми данными, должен сам вставлять операцию знакового расширения (SXTB) исходных операндов. Но: во-первых: это лишние команды; во-вторых - надо очень аккуратно указывать типы операндов, чтобы эта команда вставлялась. А в тех выражениях таких указаний (о приведении к типу char signed) не было. Поэтому те выражения - неверные. А самое правильное и корректное - сделать как я писал. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 23 8 марта Опубликовано 8 марта · Жалоба On 3/8/2024 at 3:10 PM, jcxz said: Как выглядят и как обрабатываются данные в регистрах 32-разрядного CPU - имеете представление? А с чего вы решили, что ТС будет конвертировать биты в 32-разрядном CPU ? Может, он ищет алгоритм для ПЛИС? В первом посте про CPU ничего не сказано, поэтому я написал так, как будет понятнее ТС'у. То есть, в его же обозначениях. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 217 8 марта Опубликовано 8 марта · Жалоба 1 час назад, blackfin сказал: А с чего вы решили, что ТС будет конвертировать биты в 32-разрядном CPU ? Я ничего не решал. Я специально указал в первом посте: 23 часа назад, jcxz сказал: Для 32-разрядного ARM: А после, уже ТС косвенно подтвердил, что у него как раз такой случай. 1 час назад, blackfin сказал: Может, он ищет алгоритм для ПЛИС? Советую почитать другие его посты. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pyroman 2 9 марта Опубликовано 9 марта (изменено) · Жалоба Для signed 7-bit integer (x ^ 0x40) - 0x40 Изменено 9 марта пользователем pyroman Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 10 марта Опубликовано 10 марта · Жалоба On 3/8/2024 at 10:17 PM, blackfin said: А с чего вы решили, что ТС будет конвертировать биты в 32-разрядном CPU ? Может, он ищет алгоритм для ПЛИС? В первом посте про CPU ничего не сказано, поэтому я написал так, как будет понятнее ТС'у. То есть, в его же обозначениях. Правы и blackfin и jcxz. Вариант от blackfin - если требуется результат в 8-битных ячейках памяти. Вариант от jcxz - более универсальный: результат можно хранить в 8/16/24/32 битных ячейках памяти. Основная идея понятна: растиражировать знаковый бит на все старшие биты. Или сдвинуть влево, чтобы знаковый бит оказался старшим. On 3/9/2024 at 12:07 AM, jcxz said: Советую почитать другие его посты. Что касается реализации, то в настоящее время, я делаю обработку данных на ПК. И если идея с выделением битового потока с частотно-фазового демодулятора принесёт свои плоды (а именно в сочетании с коррекцией ошибок на мягких решениях), то есть смысл рассмотреть вопрос переноса алгоритма на ARM, ПЛИС, DSP,.. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
girts 10 10 марта Опубликовано 10 марта · Жалоба Ну и наверное заход в википедию чтоб просто освежить забытое тоже может быть отнюдь не лишним - https://en.wikipedia.org/wiki/Signed_number_representations Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться