获取设置一个字节某一个位的数值

void print2(unsigned char a)

{

    int r[8];

    r[0] = ( a & (0x01 << 0)) >> 0; // 最低位

    r[1] = ( a & (0x01 << 1)) >> 1;

    r[2] = ( a & (0x01 << 2)) >> 2;

    r[3] = ( a & (0x01 << 3)) >> 3;

    

    r[4] = ( a & (0x01 << 4)) >> 4;

    r[5] = ( a & (0x01 << 5)) >> 5;

    r[6] = ( a & (0x01 << 6)) >> 6;

    r[7] = ( a & (0x01 << 7)) >> 7// 最高位

    

    printf("%d %d %d %d   %d %d %d %d\n",r[7],r[6],r[5],r[4],r[3],r[2],r[1],r[0]);

}


int main(void)

{

    unsigned char a = 0xBF;

    print2(a);

    

    unsigned char b = a | (0x01 << 6); //set on

    print2(b);

    

   b = a | (0x01 << 2); //set off 1

   unsigned char c = b ^ (0x01 << 2); //set off 2 ( 先set on 在 ^ )

    print2(c);

}

 

output:

 

1 0 1 1   1 0 1 1   //0xBF

1 1 1 1   1 1 1 1

1 1 1 1   1 0 1 1 


转载于:https://www.cnblogs.com/mobile/archive/2012/08/05/2623971.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值