Я хочу установить n-й бит справа от указателя - PullRequest
0 голосов
/ 02 августа 2020

Допустим, мы получаем память вот так:

void* start = calloc(1,1); // 1 byte = 8bits all 0 -> 00000000 and i want to get 00100000

Как мне установить 3-й бит, например, после указателя на 1?

Если блок большой, например:

void* start = calloc(1, 1024); // and you want n-th bit n > 8

((unsigned char*)start)[n/CHAR_BIT] |= (1 << (n % CHAR_BIT));

1 Ответ

1 голос
/ 02 августа 2020

Из того, что я понял из комментариев к вашему коду, вы хотите:

void* start = calloc(1,1); // Allocate memory for 1 element with 1 byte size
*((char*)start) |= (1 << 5); // Set the 6th bit from right (00100000)
...