用bis和bic实现所有位级操作

本文介绍了如何使用bis和bic进行位级操作,包括biset(bis)和bitclear(bic)的示例应用,展示了它们在处理位模式时的功能。

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

在Digital Equiment 的VAX计算机中,只有两种对位的操作函数:位设置bis和位清除bic。
其中bis(x, m)表示对于m中为1的位,置x对应的位为1. bic(x, m)正好相反,对于m中为1的位,置x对应的位为0。参数m有个更常用的称谓——掩码。对于掩码你一定不陌生,子网掩码、颜色掩码... 简单地说,掩码就是个过滤器,滤掉我们不希望得到的东西。

好了,扯远了,言归正传。


1. 位或(|)的实现
首先考虑一下位或的定义,两个参数的某一位至少有一为1则结果的对应位为1。那么我们该好好利用一下掩码了,我们要做x和y的位或,首先我们把x拿出来,令结果等于x(什么?这就结束了?当然不是)。我们还缺什么?x为0而y为1的那些位,结果应该为1。那我们就把y当做掩码,筛选掉y中为0的位,把y为1的位都赋值给结果(即使x已经将结果的改位赋值为1也不影响),就可完成位或的实现。

结果:bis(x, y)


2. 位取反(~)的实现
同样利用取反的定义和掩码的作用,我们可以简单得到对x(一个字长)位取反的做法:把0xFFFFFFFF(32位机)用x做掩码,过滤掉x
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值