黑马程序员技术交流社区

标题: &、| 相同符号,位操作符和逻辑运算符的区别? [打印本页]

作者: 格城先生    时间: 2016-4-15 22:44
标题: &、| 相同符号,位操作符和逻辑运算符的区别?
编程者经常混淆两组运算符:(&,|)和(&,|)。第一组是逻辑运算符,它的操作数是布尔型,而第二 组则是位运算符,其操作数是位序列。在布尔型操作数中,只有两个数值,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();



作者: 格城先生    时间: 2016-4-15 22:45
逻辑运算符一般用于连接boolean类型的表达式或者值;位运算符两边操作数类型是整数型数据类型的变量或值
作者: 夜语    时间: 2016-4-15 22:52
格城先生 发表于 2016-4-15 22:45
逻辑运算符一般用于连接boolean类型的表达式或者值;位运算符两边操作数类型是整数型数据类型的变量或值 ...

看你所用的位置,如果用在条件表达式内就是逻辑运算,如果用在非条件表达式内就是位运算符
作者: zwb690949450    时间: 2016-4-15 22:58
确实可以用来求奇偶数,不过字太多,差评!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2