zoukankan      html  css  js  c++  java
  • 位运算(&、|、^)与逻辑运算(&&、 ||)差别

            刚无意在一篇文章中看到了位运算(&、|)和逻辑运算(&&、||)的介绍。想起了自己薄弱的基础知识。于是百度了几把总结了下。

            首先从概念上区分下,位运算是将运算符两边的数字换算成二进制(例:0000010001)后比較同样位置上的0、1进行运算的。逻辑运算即比較运算符两边的逻辑值(true或false)。概念比較抽象。下边借助实际样例比較下。

            位运算

    先将每一个数转换成二进制。然后进行。位或(|)表示相相应的每位至少有一个为1。则结果为1,仅仅有两个都为0。结果才为0.位与(&)表示相相应的两位必须都为1,结果才为1,否则为0。位异或(^)比較特殊,它比較的是假设两个不同则值为1(如:(1、0)(0、1))。同样(如:(1、1)(0、0))则为0。
    比如: 3 |2
    11       //二进制的3
    10       //二进制的2
    --------------------
    11       //二进制的3

    比如: 3 & 2
    11
    10
    ---------------------
    10       //二进制的2


    比如:  3^2

    11

    10

    ---------------------

    01       //二进制的1

    该样例介绍的是位运算的原理,注意下这里位运算|的结果是3。&的结果是2  这里刚好和比較的数字2、3反复仅仅是个巧合,请不要以为位运算的结果是两个数字中的一个。

            逻辑运算

    先将逻辑运算符(&& ||)两边的表达式都换算成逻辑值(true、false)。逻辑或(||)表示假设两个值至少有一个为ture,则结果为true,仅仅有两个都为false。结果才为false。

    逻辑与(&&)表示两个都为true。结果才为true,否则为false。这里比較简单,就不做样例介绍了。



            作用

    逻辑运算的作用相信大家都知道。下边来介绍下位运算的作用:

    一、按位与 &
    1、 清零特定位 (mask中特定位置0。其他位为1,s=s&mask) s=s&mask
    2、取某数中指定位 (mask中特定位置1。其他位为0。s=s&mask) s=s&mask
    二、按位或 |
    经常使用来将源操作数某些位置1。其他位不变
    三、按位异或
    1、使特定位的值取反 (mask中特定位置1,其他位为0 s=s^mask)

    2、把一个数自清零,如 a=a xor a 无论a是多少,最后a都等于零



    为了让大家对位运算的作用更清晰些。下边再举个样例:

    按位与运算通经常使用来对某些位清0或保留某些位。

    比如把a 的高八位清 0 , 保留低八位, 可作 a&255 运算 ( 255 的二进制数为0000000011111111)。

    高八位清0,保留低八位。仅仅要用一个数前边8位为0(&的情况下有一个为0即为0,就意味着清空没值了)后八位为1 (1与原数字(0、1)比較后值还为原数字的值,意味着保留原值)就可以成功。那么这个数就是0000000011111111即255。



  • 相关阅读:
    【C语言】中的版本规范(C89 C99等)
    【微机】计算机系统组成
    【微机】验证负数以补码存储程序 C语言
    katalon studio升级到6.3.3版本后如何生成测试报告
    使用Katalon Studio进行数据驱动测试的方法(转)
    katalon 参数化
    Katalon中的测试对象、用例和套件的命名规范
    转载kalaton故障处理
    Katalon Studio IE浏览器 不好用 无法录制
    Katalon Studio操作界面详细说明(转载)
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/7010675.html
Copyright © 2011-2022 走看看