六十六 位操作 0x1 << 3

 #define   BIT3   (0x1   <<   3)   
    static   int   a;   
      
    void   set_bit3(void)     
    {   
            a   |=   BIT3;   
    }   
    void   clear_bit3(void)     
    {   
            a   &=   ~BIT3;   
    }

用   #defines   和   bit   masks   操作。这是一个有极高可移植性的方法,是应该被用到的方法。      

0x表示此数为16进制表示方法 
0x1表示为2进制就是0001 
<<是移位操作 表示左移,>>表示右移
0x1<<3表示将0x1向左移3位 
即0x1<<3 = 0001<<3 = 1000 = 0x8

a |= BIT3 相当 a = a | BIT3 相当 a = a | 0x0008; 
a &= ~BIT3 相当 a = a & ~BIT3 相当 a = a & 0xFFF7;

 

#define BIT_MASK(bit_pos) (0x01<<(bit_pos))

函数:

int bit_set(unsigned int *val,unsigned char pos)

{

    if(pos>=sizeof(unsigned int)*8)

    {

          return 0;

    }

     *val=(*val&~BIT_MASK(pos));

    return 1;

}

实现高低字位交换函数:

#include<iostream>
#include<string>
using namespace std;
int main()
{
unsigned short a=0xABCD;
unsigned short b,c,d;
b=(a<<8)&0xff00;
c=(a>>8)&0x00ff;
d=c|b;
printf("%x",d);//cdab
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值