【?】位运算符

/*

  		注:以下出现的abc都按16位计算二进制
		& 与		
  				对应位都为1才为1,否则为0
  				例:
  					a 		=00000000 10001101	=141
  					b 		=00000000 00111000	=56
					a&b 	=00000000 00001000  	=8			
				
       	| 或	
	       		对应位都为0才为0,否则位1
	       		例:
	       			a		=00000000 10001101	=141
  					b 		=00000000 00111000	=56
	       			a|b		=00000000 10111101	=189		
	       			
	   	^ 异或		
				例:
					a		=00000000 10001101	=141
  					b 		=00000000 00111000	=56
					a^b 	=00000000 10110101	=181		对应位相同为0,否则为1
					
	   	~ 取反		
				1改为0,0改为1
				例:
					a 		=00000000 10001101	=141
					~a  	=11111111 01110010	=-142	
						
	  	<< 左移		
				向左移n位,右边移空的位补0,左边移出的部分舍弃
				例:
					a		=00000000 10001101	=141
					a<<1	=0(舍弃) 00000001 00011010(补0)	=282	
				注:在总位数足够储存左移后的值时,num<<n 相当于 num*n的2次方 。位数不足时,会使这个数变小(高位会舍弃)。 
		
		>> 右移		
				向右移动n位,正数左边空位补0,负数左边补1。右边移出的位舍弃	
				例1:
					a		=00000000 10001101	=141
					a>>1 	=0(补0) 0000000 01000110 1(舍弃)	=70	
				例2:
					c		=11111111 11100111	=-25
					c>>1	=1(补1) 11111111 1110011 1(舍弃)	=-13
				注:num>>n 相当于 num/n的2次方
				
		>>> 无符号右移	
		         无符号右移不论是正数还是负数都在左边移空的位补0,右边移出的位舍弃
			  正数:
			  		a>>>1	=0(补0) 0000000 01000110	 1(舍弃)=70		
			  负数:
			  		c>>>1	=0(补0) 11111111 11110011 1(舍弃)	=2147483635	
			  
			  无符号右移(>>>)对正数相当于右移(>>),但是针对负数时 与右移(>>) 的区别是:由于在左边补了0,所以会把负数变为正数。
 */

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值