位运算(&、|、^)与逻辑运算(&&、 ||)差别
刚无意在一篇文章中看到了位运算(&、|)和逻辑运算(&&、||)的介绍。想起了自己薄弱的基础知识。于是百度了几把总结了下。
首先从概念上区分下,位运算是将运算符两边的数字换算成二进制(例: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语言中的位运算和逻辑运算
这篇文章来自:http://blog.csdn.net/qp120291570/article/details/8708286 位运算 C语言中的位运算包括与(&),或(|),亦或(^),非( ...
- jave 逻辑运算 vs 位运算 + Python 逻辑运算 vs 位运算
JAVA中&&和&.||和|(短路与和逻辑与.短路或和逻辑或)的区别 博客分类: 面试题目 Java.netBlog 转自 :http://blog.csdn.net/web ...
- Java运算符使用总结(重点:自增自减、位运算和逻辑运算)
Java运算符共包括这几种:算术运算符.比较运算符.位运算符.逻辑运算符.赋值运算符和其他运算符.(该图来自网络) 简单的运算符,就不过多介绍使用了,可自行测试.关于赋值运算,可以结合算术运算和位运算 ...
- 数据运算+-*/,比较运算符==!=,赋值运算,逻辑运算and,or,not,成员运算in,not in,身份运算is is not,位运算&|,运算符的优先级
取模就是返回余数. 取模的作用主要是来取奇偶数来用的,奇数干嘛,偶数干嘛. 比较运算符: 赋值运算: 逻辑运算: 赋值的时候可以多个变量同时赋值 成员运算: in就是在不在的意思. 身份运算: 位运算 ...
- golang中算数运算、位运算、逻辑运算、赋值运算常用方法
package main import "fmt" var a = 21.0 var b = 5.0 //var c float64 func main() { Arithmeti ...
- python算数、逻辑运算,位运算
算术运算符 对变量和数组进行算术运算. 算术运算符:+,-,*,/,% +:将连个或者多个数值相加 -:将两个数值相减 *:将两个数值相乘 /:将两个数值相除 %:取相除的余数 赋值运算符 将右边的值 ...
- C#位运算讲解与示例
首先每一个权限数都是2的N次方数 如:k1=2 ; //添加 k2=4 ; //删除 k3=8; //修改 ... 如此定义功能权限数,当需要组合权限时,就需要对各个所拥有的权限数按位或了. 如: p ...
- 深入理解计算机系统(2.2)---布尔代数以及C语言上的位运算
布尔代数上的位运算 布尔代数是一个数学知识体系,它在0和1的二进制值上演化而来的. 我们不需要去彻底的了解这个知识体系,但是里面定义了几种二进制的运算,却是我们在平时的编程过程当中也会遇到的.这四种运 ...
- C#位运算讲解与示例2
在C#中可以对整型运算对象按位进行逻辑运算.按位进行逻辑运算的意义是:依次取被运算对象的每个位,进行逻辑运算,每个位的逻辑运算结果是结果值的每个位.C#支持的位逻辑运算符如表2.9所示. 运算符号 意 ...
随机推荐
- windows电脑空间清理
最近电脑空间又快满了,想下载一些好电影音频资源都要先临时清理一些文件才行,今天有时间就彻底整理一下,将整理过程及用到的好工具都记录一下,方面下次再遇到问题时可以很方面的参考执行. 1.分析磁盘空间占用 ...
- Gson解析List的一点小问题
这阵子在使用gson解析时遇到了点小麻烦,因为一直用的fastjson,最近一个项目里使用的gson,需要解析list集合,查资料都是使用TypeToken解决,相对比较麻烦,下面为大伙推荐一种简便的 ...
- vue中makeMap方法的使用 (定义注册一些值 后期方便使用)
function makeMap ( str, expectsLowerCase ) { var map = Object.create(null); var list = str.split(',' ...
- Out-of-Process iframes (OOPIFs)
For Developers > Design Documents > Out-of-Process iframes (OOPIFs) This page provides an ...
- bzoj 2259: [Oibh]新型计算机 最短路 建模
Code: #include<cstdio> #include<cstring> #include<algorithm> #include<queue> ...
- yii2-Ueditor百度编辑器
今天在网上看了下有关图片上传的教程,历经挫折才调试好,现在把相关代码及其说明贴出来,以供初次使用的朋友们参考. 资源下载 yii2.0-ueditor下载路径: https://link.jiansh ...
- JS 中深拷贝的几种实现方法
JS 中深拷贝的几种实现方法1.使用递归的方式实现深拷贝 //使用递归的方式实现数组.对象的深拷贝 function deepClone1(obj) { //判断拷贝的要进行深拷贝的是数组还是对象,是 ...
- 题解 P3243 【[HNOI2015]菜肴制作】
这道题看起来就是个裸的拓扑排序,抄上模板就能AC. 上面这种想法一看就不现实,然鹅我第一次还真就这么写了,然后被随意hack. 我们需要注意一句话: 现在,酒店希望能求出一个最优的菜肴的制作顺序,使得 ...
- [Recompose] Handle React Events as Streams with RxJS and Recompose
Events are the beginning of most every stream. Recompose provides a createEventHandler function to h ...
- MAC 文件加密
MAC 文件加密 (2011-10-08 00:08:52) 标签: 杂谈 分类: MAC技巧篇 我们都有一些私密的文件需要保存,在苹果操作系统下,如何为这些文件或文件夹设置密码呢? 利用系统自带的创 ...