у меня есть ммап
void *mymap;
mymap = mmap(0, attr.st_size, PROT_READ|PROT_WRITE, MAPFILE|MAP_SHARED, fd, 0);
Я открыл файл с содержимым HEX 0x25362364, который
00100101001101100010001101100100
в двоичном формате. Теперь я хочу выполнить битовый сдвиг:
char *str = (char *)mymap;
for(int i=0;i<attr.st_size;i++) {
str[i] = str[i] >> 4;
}
мой новый файл содержит новое двоичное число
00000010000000110000001000000110
но желаемый результат состоял в том, чтобы сдвинуть все на 4 бита вправо:
00000010010100110110001000110110
как я могу это сделать? бонусный вопрос: если двоичные числа MSB равны 1, как я могу заполнить левую сторону нулями при сдвиге вправо?