位运算(&、|、^)与逻辑运算(&&、 ||)差别
刚无意在一篇文章中看到了位运算(&、|)和逻辑运算(&&、||)的介绍。想起了自己薄弱的基础知识。于是百度了几把总结了下。
首先从概念上区分下,位运算是将运算符两边的数字换算成二进制(例: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所示. 运算符号 意 ...
随机推荐
- 人生之清单(list of life)
人生要走走停停,想想记记,修修改改,再向前走.国家工程,公平正义,一腔热血,都很容易燃起来,热血起来. 1. 没得选,有得选,怎么办 没得选 原生家庭,自己怎么生,怎样的父母: 遇见谁,会有怎样的对白 ...
- Golang 学习笔记 目录总结
- 基础: 下载安装 声明变量的方法 数据的三种基础类型:bool,数字,string 数据类型:数组和切片 数据类型:Maps 条件判断以及循环 函数 包管理 package 指针 结构体 - 初步 ...
- Android-加载大图,照片墙的实现
照片墙这种功能现在应该算是挺常见了,在很多应用中你都可以经常看到照片墙的身影.它的设计思路其实也非常简单,用一个GridView控件当作“墙”,然后随着GridView的滚动将一张张照片贴在“墙”上, ...
- dedecms实现表单提交数据到指定的邮箱
1.http://blog.csdn.net/webnoties/article/details/17219219 2.http://www.jz96.com/451.html 3.https://m ...
- c#中debug和release版本的区别
1 debug版本称为调试版本,包含各种调试信息,以为开发人员提供强大的应用程序调试能力,其没有做任何优化,速度慢. 2 release版本称为发布版本,不保存调试信息,但是做了各种的优化,体积小,运 ...
- 联想 M415 I3-6100 CPU安装系统方法
问题: 直接用PE GHOST系统后,USB无法使用,导致鼠标.U盘也无法使用 即 无法安装驱动.软件等 方法: 1.按网上方式,安装集成USB3.0的PE系统 2. 直接用PS2鼠标安装
- [NOI2008]志愿者招募 网络流 建模
题目描述申奥成功后,布布经过不懈努力,终于成为奥组委下属公司人力资源部门的主管.布布刚上任就遇到了一个难题:为即将启动的奥运新项目招募一批短期志愿者.经过估算,这个项目需要N 天才能完成,其中第i 天 ...
- ln---创建链接
ln命令用来为文件创件连接,连接类型分为硬连接和符号连接两种,默认的连接类型是硬连接.如果要创建符号连接必须使用"-s"选项. 注意:符号链接文件不是一个独立的文件,它的许多属性依 ...
- Win10+CUDA9.0+cuDNN7.2 下载 安装 配置
官方提示Note: CUDA must be installed only after that MSVS2015 had been installed.安装CUDA前须安装VS2015 cuDNN与 ...
- 现在有一个函数A和函数B,请你实现B继承A
现在有一个函数A和函数B,请你实现B继承A // 方式1 function B(){} function A(){} B.prototype = new A(); // 方式2 function A( ...