一、按位与运算符( & )
参加运算的两个数,按二进制位进行“与”运算
运算规则:只有两个数的二进制同时为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