关于位运算(C++)

关于位运算(C++)

1.规则

(1)位与 &
					1&1=1
					1&0=0
					0&1=0
					0&0=0
					
					12(0000 1100)   &   7(0000 0111)   =   4(0000 0100)
(2)位或 |
				1|1=1
				1|0=1
				0|1=1
				0|0=0
					
				12(0000 1100)   |   7(0000 0111)   =   15(0000 1111)
(3)位非 ~
				~1=0
				~0=1

			~   7(0000 0111)   =   248(1111 1000)
(4)异或 ^
				1^1=0
				1^0=1
				0^1=1
				0^0=0

			12(0000 1100)   ^   7(0000 0111)   =   11(0000 1011)
(5)左移 <<
			0000 1000<<1=0001 0000
			
			12(0000 1100)   <<   1   =   24(0000 0110)
(6)右移 >>
			0000 1000<<1=0000 0100
			
	 		12(0000 1100)   >>   1  =   6(0000 0110)

2.作用(用法)

&:将指定的地方设为0
&的0   设置为0
&的1   不变

|:将指定的地方设为1
|的0   不变
|的1   设置为1

~置反
~:    将:1  (0000 0001)、3  (0000 0011)、7  (0000 0111)、15 (0000 1111)
   设置为:254(1111 1110)、252(1111 1100)、248(1111 1000)、240(1111 0000)

>> or << 得到需要的数字
>>     255>>4:
	 (1111 1111)变为(0000 1111)

<<     255<<4:
	(1111 1111)变为(1111 0000)

3. 代码(例子)

#include<iostream>

using namespace std;

int main(void) {
	unsigned char number_12 = 12;	//00001100
	unsigned char number_7 = 7;	//00000111

	//位或
	cout << (number_12|number_7) << endl;

	//位与
	cout << (number_12&number_7) << endl;

	//异或
	cout << (number_12^number_7) << endl;

	//位非
	unsigned char x = ~7;
	cout << (int)x << endl;

	//左移
	cout << (number_7 << 1) << endl;


	//右移
	cout << (number_12 >> 2) << endl;

	rewind(stdin);
	getchar();
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值