您的位置:首页 > 编程语言

小技巧之位操作的一种编程方式

2013-06-27 17:47 197 查看
一般地,我们要确认某个字节a的某位是否为1,

byte ifbit1( byte a ){  // 第一位

    return a&0x01;

}

byte ifbit4( byte a ){  // 第4位

  return a&0x10;

}

而要确定的位是由变量p指定时,

byte ifbit( byte a, int p ){

    byte one = (0x01<<p);

    return a&one;

}

再看,如何给某个字节的位置数操作

byte setbit1( byte a ){

    return a|0x01;

}

byte clearbit1( byte a ){

  return a&0xFE;  // a&(0xFF-0x01)

}

同样的,看看由变量p指定的位时的情况:

byte setbit( byte a,int p){

  byte one = (0x01<<p);

   return a|one;

}

byte clearbit( byte a,int p ){

  byte one = (0x01<<p);

  return a&(0xFF-one);

}

虽然这些操作非常简单, 但是写成函数,确实非常方便地对位操作进行了封装,还是很有必要的, 尤其是对32位或者64位操作时, 很容易少写或者多写一个0之类的.

还有一种不使用函数的方法,就是定义好位的常量, 直接调用常量来操作.不仅可以增加执行效率,还可以减少函数调用产生的栈操作.

static const byte sbit8[8]  = { 0x01, 0x02,0x04,0x08,0x10,0x20,0x40,0x80 };

static const byte cbit8[8] = { 0xFE, 0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F };

a&sbit8[p];  // 查看p位是否为0

a|sbit8[p];   // 置位

a&cbit8[p]  // 清除位
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  编程