C语言中的逻辑运算符:按位与,按位或,按位异或,取反,左右移位 | 您所在的位置:网站首页 › c语言程序原理是什么意思 › C语言中的逻辑运算符:按位与,按位或,按位异或,取反,左右移位 |
c语言中存在6个位操作运算符,且它们只能用于整形操作数。 & 按位与 | 按位或 ^ 按位异或 按位右移 ~ 按位取反 1..按位与(AND):& 一定要将&与&&区分开来,后者是逻辑与。 (1)按位与的定义是:同一二进制位上的数字都是1的话,&的结果为1,否则为0. 0 & 0 = 0; 0 & 1 = 0; 1 & 1 = 1; (2)根据这个特性,&操作常常用来屏蔽特定的二进制位。例如: 0000 1111 & 0000 0011 结果为0000 0011.可以看见,1111的前两位被屏蔽成为0了。 所以如果想清空数据,只需要将原二进制数与上0就可以了。0的位数对应原二进制数的位数,对各位进行屏蔽,全部置0. 相对的,&可以利用0来屏蔽,也可以用1来读取。 例如: 一个二进制数 1101 1001,我只想要它的后四位,怎么办呢? 只需要进行如下操作:1101 1001 & 0000 1111即可。 其实该方法是屏蔽和读取的结合,&0保证消除无用位,&1保证有用数据的完整性。 总结:对于原二进制数来说,&0是屏蔽,&1是不变。 2.按位或(OR):| 同样,不要将“|”和“||”(逻辑或)搞混。 (1)定义:只要参与运算的双方其中有一个是1,结果就是1.同0才为0. 0 | 0 = 0; 0 | 1 = 1; 1 | 0 = 1; 1 | 1 = 1; (2)特殊用处: 将某些特定位置1. 例如:1010 0000 | 0000 1111. 结果为 1010 1111. 总结:对于原二进制数来说,|0是不变,|1是置1. 3.按位异或:^ ^这个符号我们常用来表示次方。不过在计算机中,它代表的就不是次方的意思了。 (1)定义 只要参与运算的双方互异,结果就为1,否则为0. 0 ^ 1 = 1; 1 ^ 0 = 1; 1 ^ 1 = 0; 0 ^ 0 = 0; (2).用法 可以通过上面的定义看到,一个数^1的话就会0变成1,1变成0,而^0则不对原数进行改变。所以根据此特性可以对特定位进行0 1 反转。 例如: 1100 1100 ^ 0000 1100 结果为 1100 0000. 同样的,如果对一个数进行^0,代表保留原值。 总结:对于原二进制数来说,^0是不变,^1是反转。 4.取反(~) 对一个二进制数进行取反。1变0,0变1. 唯一需要注意的一点是,~的优先级是逻辑运算符中最高的,必须优先计算。 5.左移,右移 左移与右移比较类似,是将目标二进制数字向左/右移动相应的位数。 左移补0:1111 1111 |
CopyRight 2018-2019 实验室设备网 版权所有 |