test18src.c

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#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*/
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值