#include <stdio.h>/*将x的p位(从右边0起)的右边n位置为y的低n位*/unsigned int setbits(unsigned int x, int p, int n, unsigned y);int main(void){unsigned int x = 017;unsigned int y = 01;printf( "%u\n", setbits( x, 3, 2, y) );}unsigned int setbits(unsigned int x, int p, int n, unsigned int y){/*构造111111000011 再与上x 再或上00000(yn)00*//*y取低n位再左移p+1-n位*/return ( x & ((~0 << (p+1)) | ~(~0 << (p+1-n))) ) | ( (y & ~(~0 << n)) << (p+1-n) );/*总结 与1 或0*/}
test18src.c
最新推荐文章于 2021-04-30 16:11:55 发布