zoukankan      html  css  js  c++  java
  • &、|与&&、||的比较

    & 按位与
    && 逻辑与 

    &、|与&&、||的比较:后者的性能比较好,只要看第一个操作符即可,如果&&的第一个操作数即为false,则不用看第二个操作数,结果直接为false,如果||的第一个操作数为true,则不用考虑第二个操作数,结果直接为true。但&、|的操作数都必须计算到。

    &、|还可以进行数值的操作,用法:第一个操作数中的每个位都与第二个操作数中相同位置上的位进行比较,得到结果。

    如:4&5=100&101=100

    2008-04-21 17:01

    之所以说相同,是针对他们各自的运算对象来说的。
    对于(&&,||),运算的对象是逻辑值,也就是True/False
    运算结果只有下列四种情况。
    True && True = True
    True && False = False
    False && True = False
    False && False = False

    True || True = True
    True || False = True
    False || True = True
    False || False = False

    对于(&,|),运算的对象是位,也就是1/0
    运算结果只有下列四种情况。
    1 & 1 = 1
    1 & 0 = 0
    0 & 1 = 0
    0 & 0 = 0

    1 | 1 = 1
    1 | 0 = 1
    0 | 1 = 1
    0 | 0 = 0

    &&和&对于他们各自的运算对象来说,结果是一样的。
    同理,||和|也是一样的。

    你说到的
    5&&2
    的运算结果,是这样对待的。
    首先5,非零,即为True
    2,非零,True
    True&&True = True
    结果即为True。整个的运算过程是需要做变换的。并不是直接使用操作数的二进制直接比较。所以结果是不同的。在比较的时候,True应该会被转成类似11111111这样的二进制的值,False可能会转成00000000。

    这里的一样,说的是针对运算对象。
    &&的运算对象是True/False 不管你使用的是什么类型的表达式,他首先要转换为True/False中的一个,然后才参与运算。
    &的运算对象就是0/1,不需要转换,有多少位直接计算多少位就可以了。


  • 相关阅读:
    /dev/null
    useradd
    linux防火墙
    安装ntp服务同步服务器时间
    使用WTM框架项目的部署遇到的问题及解决方式
    .net5 winform 打开文件夹
    maven打包命令
    url.openconnection() 设置超时时间
    java判断http地址是否连通
    解决 curl: (35) Encountered end of file
  • 原文地址:https://www.cnblogs.com/zhouyunbaosujina/p/3123201.html
Copyright © 2011-2022 走看看