关于位运算理解——按位或、按位与、异或

导读:本篇文章讲解 关于位运算理解——按位或、按位与、异或,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

一、按位与运算符( & )

参加运算的两个数,按二进制位进行“与”运算

运算规则:只有两个数的二进制同时为1,结果才为1,否则为0(负数按补码形式参加按位与运算)

即 0 & 0= 0 ,0 & 1= 0,1 & 0= 0, 1 & 1= 1

例:3 &5  即 00000011 & 00000101 = 00000001 ,所以 3 & 5 的值为1

二、按位或运算符( | )

参加运算的两个数,按二进制位进行“或”运算

运算规则:参加运算的两个数只要两个数中的一个为1,结果就为1

即  0 | 0= 0 ,  1 | 0= 1  , 0 | 1= 1  ,  1 | 1= 1 

例:2 | 4 即 00000010 | 00000100 = 00000110 ,所以2 | 4的值为 6 

三、异或运算符(^)

参加运算的两个数,按二进制位进行“异或”运算

运算规则:参加运算的两个数,如果两个相应位为“异”(值不同),则该位结果为1,否则为0

即 0 ^ 0=0  , 0 ^ 1= 1  , 1 ^ 0= 1  , 1 ^ 1= 0 

例: 2 ^ 4 即 00000010 ^ 00000100 =00000110 ,所以 2 ^ 4 的值为6 

四、求反运算(~)

求反运算符~为单目运算符,具有右结合性。其功能是对参与运算的数的各二进位按位求反

例如
~9
的求反运算为:
~(1001)
结果为:
0110

五、左移运算(<<)

左移运算符,是双目运算符。左移n位就是乘以2的n次方。 
其功能把,左边的运算数的各二进位全部左移若干位,
由,右边的数指定移动的位数,高位丢弃,低位补0。

例如:
将a的二进制数左移2位,右补0。若a=15,即二进制数00001111,左移2位得00111100,即十进制数60

六、右移运算(>>)

右移运算符,是双目运算符。右移n位就是除以2的n次方
其功能是把,左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。

例如:设 a=15,a>>2 表示把00001111右移为00000011(十进制3)。 
应该说明的是,对于有符号数,在右移时,符号位将随同移动。
当为正数时, 最高位补0,而为负数时,符号位为1,
最高位是补0或是补1 取决于编译系统的规定。
Turbo C和很多系统规定为补1。

数学意义:
右移一位相当于除2,右移n位相当于除以2的n次方。这里是取商哈,余数就	不要了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/68468.html

(0)
小半的头像小半

相关推荐

极客之家——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!