Я пытаюсь реализовать быстрое преобразование Фурье из первых принципов.Одним из первых шагов в этом направлении является переупорядочение входных данных в определенной последовательности, из которой может быть применен алгоритм бабочки radix-2.Эта конкретная последовательность достигается путем инвертирования битов в позициях массива, как показано ниже:
То, как я думал, это сделать, учитываямассив реальных выборочных данных, чтобы создать указатель, который ссылается на первую позицию массива.Затем, чтобы использовать этот указатель, чтобы преобразовать адрес памяти первой позиции массива данных в двоичное число, выполнить обращение к нему битов, преобразовать обратно в шестнадцатеричное и установить первую позицию нового массива равной разыменованному значению этого«бит обращенный» адрес памяти.Делая это в цикле, я смог бы каждый раз увеличивать исходный указатель, обрабатывать «обратный» адрес и заполнять новый массив значениями в правильном порядке.
У меня два вопроса:
Это даже хорошая практика программирования?Я знаю, что установка указателей на определенные адреса не одобряется, но я полагаю, что массивы выделяются в памяти при запуске, так что все должно быть в порядке.
Как преобразовать значение указателя в двоичное значение, используя язык Си?Я думал о чем-то вроде этого:
int sampledData [8];int * pointer = samples;указатель int hex_address = (int);