码迷,mamicode.com
首页 > 其他好文 > 详细

char类型数据位操作处理,清零、设值、取值

时间:2020-04-17 12:48:22      阅读:85      评论:0      收藏:0      [点我收藏+]

标签:oid   cpp   amp   相同   har   set   编译   取值   return   

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类型数据位操作处理,清零、设值、取值

标签:oid   cpp   amp   相同   har   set   编译   取值   return   

原文地址:https://www.cnblogs.com/xingzhensun/p/12718988.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!