c++学习-基础-位操作符

001

/*
	Description: 位操作符 
*/
#include<iostream>
using namespace std;

int main()
{
	
	int a = -127;
	
	unsigned char bits = 0227;	//八进制 -->二进制  10010111 
	
	bits = ~bits; 				//     取反         01101000 
	
	cout<<(int)bits<<endl;
	
	bits = 1;             		//	  				00000001     
	unsigned char result;
	result = bits<<1;         	//左移一位 			00000010
	cout<<(int)result<<endl;
	
	result = bits<<2;			//左移两位			00000100
	cout<<(int)result<<endl; 
	
	bits = 64;					//					01000000
	result = bits>>3;			//右移三位 			00001000
	cout<<(int)result<<endl;
	
	unsigned char b1 = 0145;    //八进制 			01100101
	unsigned char b2 = 0257;	//					10101111
	unsigned char result2 = b1 & b2;           //位与运算    都是1则结果为1,否则为0  结果为:00100101
	cout<<(int)result2<<endl;
	
	result2 = b1 | b2;     		//位或运算			都是0则结果为0,否则为1   		结果为:11101111
	cout<<(int)result2<<endl;
	
	result2 = b1 ^ b2; 			//位异或			相同为0,不同为1   				结果为:11001010
	cout<<(int)result2<<endl; 
	
	
	return 0;
}

002

/*
	Description: bitset对象 
*/
#include<iostream>
#include<bitset>
using namespace std;

int main()
{
	bitset<30> a;
	unsigned long b;
	
	a.set(27);//第二十七位被设为1
	
	//0000000000000000000000001   -->    00100000000000000000000
	b = b |(1UL <<27);//把第二十七位被设为1
	
	a.reset(22);
	b = b & ~(1UL<<22); //等价于上面那句,  取反 再做位与运算 
	
	bool status;
	status = a[27];
	
	status = b & (1UL<<27);
	 
	return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值