zoukankan      html  css  js  c++  java
  • 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 & 0x40);
    		else if (i == 7)
    			byt = byt ^ (byt & 0x80);
    	}
    
    	//	将某位设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 | 0x40;
    		else if (i == 7)
    			byt = byt | 0x80;
    	}
    
    	//	取出某位
    	//
    	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 & 0x40);
    		else if (i == 7)
    			return int(byt & 0x80);
    
    		return 0;
    	}
    
    private:
    	unsigned char byt;
    
    
    // 	&	与	两个位都为1时,结果才为1
    // 	|	或	两个位都为0时,结果才为0
    // 	^	异或	两个位相同为0,相异为1
    // 	~	取反	0变1,1变0
    // 	<<	左移	各二进位全部左移若干位,高位丢弃,低位补0
    // 	>>	右移	各二进位全部右移若干位,对无符号数,高位补0,有符号数,各编译器处理方法不一样,有的补符号位(算术右移),有的补0(逻辑右移)
    };
    

      

  • 相关阅读:
    js中常用的算法排序
    bootstrap Table的使用方法
    js中的继承
    js函数的节流与防抖
    along.js
    Vue组件通讯
    前端性能优化
    Vue路由学习心得
    Vue 2.0 路由全局守卫
    【前端】自适应布局方法总结
  • 原文地址:https://www.cnblogs.com/xingzhensun/p/12718988.html
Copyright © 2011-2022 走看看