#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
本文介绍了一个具体的位操作函数setbits()的实现方法,该函数能够将一个无符号整数x的指定位置p(从右开始计数)及其右侧n位设置为另一个无符号整数y的最低n位。通过具体的C语言代码示例,展示了如何构造特定的位掩码来完成这一任务。

被折叠的 条评论
为什么被折叠?



