LINUX.ORG.RU
Ответ на: комментарий от ixrws
Может быть. Но мне в пределах бита нужно делать перестановки и делать их максимально быстро. Может имеет смысл делать вставки на ассемблере?
aiqu6Ait ★★★★★
() автор топика
Как вариант - сделать структуру, позволяющую обращаться к произвольным битам байта:

typedef union {
  struct {
    unsigned char bit0;
    unsigned char bit1;
    unsigned char bit2;
    unsigned char bit3;
    unsigned char bit4;
    unsigned char bit5;
    unsigned char bit6;
    unsigned char bit7;
  };
} my_byte;

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em
это мрак какой-то...
с какой стати my_byte.bit0 вернет тебе именно бит 0???
уж лучше использовать битовые поля:

struct my_byte{
unsigned char bit0:1;
unsigned char bit1:1;
unsigned char bit2:1;
unsigned char bit3:1;
unsigned char bit4:1;
unsigned char bit5:1;
unsigned char bit6:1;
unsigned char bit7:1;
};

xydo ★★
()
Ответ на: комментарий от urxvt
Линк без якоря должен был быть, просто забукмакил так.
urxvt ★★★★★
()
Ответ на: комментарий от xydo
> уж лучше использовать битовые поля:

Точно, забыл про :1

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от xydo
Нет, в сответствии с жёстко заданным алгоритмом.
aiqu6Ait ★★★★★
() автор топика
Ответ на: комментарий от aiqu6Ait
> Может быть. Но мне в пределах байта нужно делать перестановки и делать их максимально быстро.

Если только в пределах байта, то может подойти табличная трансляция.

char table[256];
....
char in, out;
....
out = table[in];

> Может имеет смысл делать вставки на ассемблере?


Не имеет. Узким местом в твоем случае является жесткий диск.
Manhunt ★★★★★
()
Запросить бит n в байте - if (byte & (1 << n)) { .. бит == 1 ..} else { bit == 0 ..}

Установить бит n в байте - byte |= ( 1 << n )

Сбросить бит n в байте - byte &= ~(1 << n)

Absurd ★★★
()
Спасибо за битовые поля. Именно с ними и буду реализовывать алгоритм.
aiqu6Ait ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.