左移/右移:都是指 二进制 移位

本文介绍了如何将数值转换为二进制进行移位操作,详细解释了在IO卡输入/输出中的位比较应用,以及如何使用编码实现变量特定位的置0和置1,强调了位操作时保持其他位不变的重要性。
摘要由CSDN通过智能技术生成

一、需要先将 目标数值,转换为“二进制”后,再进行移位操作!移位之后,再转换回之前的的进制数!

0x01<<1 => 0000 0001 <<1=>0000 0010 =>0x02

二、bit位应用场景之--IO卡(输入/输出高电平)

for(int i = 0; i < 16; i++)//16路IO卡
{
	UINT nMask = (0x00000001 << i);
	//上次的第i位 和 当前次的第i位 比较
	if((nMask & nLastBit) != (nMask & nCurrentBit))		//发生变化
	{
        //设置“事件”使能状态,从而控制相应线程的同步
    }
}            

三、编码实现某一变量某位清 0 或置 1
       给定一个整型变量 a,写两段代码,第一个设置 a 的 bit 3,第二个清 a 的 bit 3,在以上两个操作中,要保持其他位不变。
【答案】

#define BIT3 (0x1 << 3 )
Satic int a;

//设置 a 的 bit 3:
void set_bit3( void )
{
    a |= BIT3; //将 a 第 3 位置1
} 

//清a 的 bit 3
void set_bit3( void )
{
    a &= ~BIT3; //将 a 第 3 位清0
}


说明:在置或清变量或寄存器的某一位时,一定要注意不要影响其他位。所以用加减法是很难实现
的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值