编程者经常混淆两组运算符:(&,|)和(&,|)。第一组是逻辑运算符,它的操作数是布尔型,而第二 组则是位运算符,其操作数是位序列。在布尔型操作数中,只有两个数值,0或1。在逻辑运算中,所有的非0数值都看做1处理。而位序列则可以是 有无符号的字符型,整型,长短整型等。在位运算中,是相应的位之间进行逻辑运算。因此,从逻辑上讲,位运算过程包含多个逻辑运算过程。通常,位运算操作数 选择无符号型数据。
位运算“与”的结果 是整型数
逻辑运算“与”的结果 是 布尔型 - 真与假。
运算“与”常用于 取一个数的某一位 或者 取一个数的某几位,(按二进制数来考虑,取位运算)
逻辑运算“与”常用于 条件判断,用于条件语句,while循环语句等等.
首先一点位运算的运算单位是位,逻辑运算的单位是整个数值。
位运算是根据操作数的每一位是否为0决定结果的对应位是否为0
0011 | 1010 -> 1011
逻辑运算是根据操作数整体数值是否为0决定结果是1还是0
1111 | 0000 -> 1, 0000 | 0000 -> 0, 0000 | 0010 -> 1
另外逻辑运算还一个重要特性就是,会截断求值过程:
f() | g()
这里如果f()返回值不等于0,整个表达式结果就必然是1,于是就不会执行g();
|
|