char类型数据位操作处理,清零设值取值
Posted xingzhensun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了char类型数据位操作处理,清零设值取值相关的知识,希望对你有一定的参考价值。
class GetBit { public: GetBit() {} GetBit(const unsigned char c) { byt = c; } ~GetBit() {} // 将某位清0 // void clearBit(int i) { if (i == 0) byt = byt ^ (byt & 0x01); else if (i == 1) byt = byt ^ (byt & 0x02); else if (i == 2) byt = byt ^ (byt & 0x04); else if (i == 3) byt = byt ^ (byt & 0x08); else if (i == 4) byt = byt ^ (byt & 0x10); else if (i == 5) byt = byt ^ (byt & 0x20); else if (i == 6) byt = byt ^ (byt & 0x30); else if (i == 7) byt = byt ^ (byt & 0x40); } // 将某位设1 // void setBit(int i) { if (i == 0) byt = byt | 0x01; else if (i == 1) byt = byt | 0x02; else if (i == 2) byt = byt | 0x04; else if (i == 3) byt = byt | 0x08; else if (i == 4) byt = byt | 0x10; else if (i == 5) byt = byt | 0x20; else if (i == 6) byt = byt | 0x30; else if (i == 7) byt = byt | 0x40; } // 取出某位 // int getBit(int i) { if (i == 0) return int(byt & 0x01); else if (i == 1) return int(byt & 0x02); else if (i == 2) return int(byt & 0x04); else if (i == 3) return int(byt & 0x08); else if (i == 4) return int(byt & 0x10); else if (i == 5) return int(byt & 0x20); else if (i == 6) return int(byt & 0x30); else if (i == 7) return int(byt & 0x40); return 0; } private: unsigned char byt; // & 与 两个位都为1时,结果才为1 // | 或 两个位都为0时,结果才为0 // ^ 异或 两个位相同为0,相异为1 // ~ 取反 0变1,1变0 // << 左移 各二进位全部左移若干位,高位丢弃,低位补0 // >> 右移 各二进位全部右移若干位,对无符号数,高位补0,有符号数,各编译器处理方法不一样,有的补符号位(算术右移),有的补0(逻辑右移) };
以上是关于char类型数据位操作处理,清零设值取值的主要内容,如果未能解决你的问题,请参考以下文章