常用的位操作

一,与(&)

规则:0&0=0 0&1=0 1&0=0 1&1=1
示例:PORTC &= 0b01111111; //将C口的第7位清零

二,或(|)

规则:0|0=0 0|1=1 1|0=1 1|1=1
示例:PORTC |= 0b10000000; //将C口的第7位置1

三,异或(^)

规则:0^0=0 0^1=1 1^0=1 1^1=0

示例:PORTC ^= 0b10000000; //将C口的第7位翻转

四,取反(~)

扫描二维码关注公众号,回复: 7485525 查看本文章

规则:~0=1 ~1=0
示例:PORTC = ~0b10000000; //将C口各位取反

五,左移(<<)

规则:0b000000001<<2=0b00000100
示例:PORTC = (1 << PC7); //将C口的第7位置1

六,右移(>>)

规则:0b00001000>>2=0b00000010
示例:PORTC = (0b10000000 >> 7); //将C口操作为0b00000001


注1------调试专用
示例:PORTC ^= (1 << PC7); //其他位不变化,PC7翻转


注2------实现两个值的交换,而不必使用临时变量。
示例:交换两个整数a=10100001,b=00000110的值,可通过下列语句实现:
    a = a^b;   //a=10100111
    b = b^a;   //b=10100001
    a = a^b;   //a=00000110

猜你喜欢

转载自www.cnblogs.com/inlod/p/11691202.html