Форум — Development Побитовые операции 0 0 С помощью побитовы операций написать функцию, которая копирует n бит, начиная с n-ой в другое двоичное число(переменную) int copy(in/*сюда копирует*/p,n,out/*отсюда*/) Ссылка
/* когда sizeof(int)==32 */ void copy(int* pdst, int src, unsigned offs, unsigned n) { unsigned x = src; unsigned mask = 0xffffffffu >> (32-n); *pdst = (((unsigned)src) >> offs) & mask; } /* если нужно копировать биты в туже позицию, то: */ void copy(int* pdst, int src, unsigned offs, unsigned n) { unsigned x = src; unsigned mask = (0xffffffffu >> (32-n)) << offs; *pdst &= ~mask; *pdst |= src & mask; } kosmonavt ★ (15.04.05 21:29:43 MSK) Показать ответ Ссылка
Ответ на: комментарий от kosmonavt 15.04.05 21:29:43 MSK * все равно какая у int размерность */ void copy(int* pdst, int src, unsigned offs, unsigned n) { unsigned mask = ((unsigned)-1) >> (sizeof(int)*8-n); *pdst = (((unsigned)src) >> offs) & mask; } /* если нужно копировать биты в туже позицию, то: */ void copy(int* pdst, int src, unsigned offs, unsigned n) { unsigned mask = (((unsigned)-1) >> (sizeof(int)*8-n)) << offs; *pdst &= ~mask; *pdst |= src & mask; } kosmonavt ★ (15.04.05 21:47:42 MSK) Показать ответ Ссылка
Ответ на: комментарий от kosmonavt 15.04.05 21:47:42 MSK спасибо KLIM ★ (15.04.05 21:49:31 MSK) автор топика Ссылка