码迷,mamicode.com
首页 > 其他好文 > 详细

位运算(&、|、^)与逻辑运算(&&、 ||)区别

时间:2014-09-17 10:16:42      阅读:258      评论:0      收藏:0      [点我收藏+]

标签:位运算   逻辑运算   二进制   

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

        首先从概念上区分下,位运算是将运算符两边的数字换算成二进制(例: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。


位运算(&、|、^)与逻辑运算(&&、 ||)区别

标签:位运算   逻辑运算   二进制   

原文地址:http://blog.csdn.net/liu251890347/article/details/39337905

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!