最新消息:vps推荐

位运算 &、|、^、~、>>、<<详解

未分类 Terry 559浏览 0评论

& 按位与操作,按二进制位进行”与”运算。运算规则:

0&0=0;   
0&1=0;    
1&0=0;     
1&1=1;

个人理解:与运算就是同时为真时为真,1理解成真。这样和逻辑&&运算就能对应上了。

| 按位或运算符,按二进制位进行”或”运算。运算规则:

0|0=0;   
0|1=1;   
1|0=1;    
1|1=1;

个人理解:结合逻辑||预算,有一个为真则为真,1理解为真。

^ 异或运算符,按二进制位进行”异或”运算。运算规则:

0^0=0;   
0^1=1;   
1^0=1;  
1^1=0;

个人理解:不同为真,相同为假。

~ 取反运算符,按二进制位进行”取反”运算。运算规则:

~1=0;   
~0=1;

<< 二进制左移运算符。将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。

>> 二进制右移运算符。将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。

代码示例:

#include<stdio.h>

int main(){
  unsigned int a = 60; //60=00111100
  unsigned int b = 13; //13=00001101
  int c = 0;
  c = a&b; //c=00001100
  printf("c: %d\n",c);
  
  c = a|b; //c=00111101
  printf("c: %d\n",c);

  c = a^b; //c=00110001
  printf("c: %d\n",c);

  c = ~a; //c=11000011
  printf("c: %d\n",c);

  c = a << 2; //c=11110000
  printf("c: %d\n",c);

  c = a >> 2; //c=00001111
  printf("c: %d\n",c);
  

}

输出:

c: 12
c: 61
c: 49
c: -61
c: 240
c: 15

 

转载请注明:Terry's blog » 位运算 &、|、^、~、>>、<<详解

与本文相关的文章

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址