一分钟掌握位运算符—与(&)、非(~)、或(|)、异或(^)
第一个版本:
实际开发中也经常会遇到需要用到这些运算符的时候,同时这些运算符也被作为基础的面试笔试题。
所以了解这些运算符对程序员来说是十分必要的。
于此,记录下我所理解的运算符:
如果以开关开灯论:
有这样两个开关,0为开关关闭,1为开关打开。
与(&)运算
与运算进行的是这样的算法:
0&0=0,0&1=0,1&0=0,1&1=1
在与运算中两个开关是串联的,如果我们要开灯,需要两个开关都打开灯才会打开。
理解为A与B都打开,则开灯,所以是1&1=1
任意一个开关没打开,都不开灯,所以其他运算都是0
通俗理解为A(与)&B都开则开,否则关
非(~)运算
非运算即取反运算,在二进制中1变0,0变1
110101进行非运算后为
001010即1010
或(|)运算
或运算进行的是这样的算法:
0&0=0,0&1=1,1&0=1,1&1=1
在或运算中两个开关是并联的,即一个开关开,则灯开。
如果任意一个开关开了,灯都会亮。
只有当两个开关都是关的,灯才不开。
理解为A(或)|B任意开则开
异或(^)运算
异或运算通俗地讲就是一句话
同为假,异为真
所以它是这样的算法:
0&0=0,0&1=1,1&0=1,1&1=0
第二个版本:
设真值为1,假值为0(true = 1, false = 0)。
与运算符:
与(&&):逻辑规则是两真才真。与and等同。
true && true = true ===> 1 && 1 = 1
true && false = false ===> 1 && 0 = 0
false && false = false ===> 0 && 0 = 0
false && true = false ===> 0 && 1 = 0
或运算符:
或(||):逻辑规则是只有一个为真就为真。与or等同。
true || true = true ===> 1 || 1 = 1
true || false = true ===> 1 || 0 = 1
false || false = false ===> 0 || 0 = 0
false || true = true ===> 0 || 1 = 1
异或运算符:
异或(^):逻辑规则是两个不同就为真。
true ^ true = false ===> 1 ^ 1 = 0
true ^ false = true ===> 1 ^ 0 = 1
false ^ false = false ===> 0 ^ 0 = 0
false ^ true = true ===> 0 ^ 1 = 1
非运算符:
非(!):逻辑规则是反转操作数的含义。与not等同。
!true =false ===> !1 = 0
!false=true ===> !0 =1
执行顺序:not > and > or
随机推荐
- Java子线程中操作主线程Private级别数据
两个类分别如下: <pre name="code" class="java">package Demo2; import java.util.*; ...
- 一个QQ旋风的BUG
本人喜欢用QQ旋风下载工具,很不幸的是这个工具BUG太多了. 下载不同COOKIE,相同文件名.URL的文件时候会QQ旋风崩溃. 感兴趣可以试下.
- codeblocks更改颜色主题
链接:http://www.cnblogs.com/wenbosheng/p/5899483.html
- laravel5.4 导出 Excel 表格
1.执行 composer require maatwebsite/excel 2. composer.json 文件出现(或者手动添加) 3.在config目录下 app.php 添加参数 4.导出 ...
- jsp注释<%-- --%>和<!-- -->的区别
最近在写JSP页面注释的时候,遇到一个问题,在JSP页面引用的静态属性资源文件时,在浏览器控制台报错,当我把引用的标签注释掉后,用的是<!-- -->.然后浏览器仍然报了之前那个错,经过查 ...
- 给Ubuntu系统清理垃圾
原文地址:https://blog.csdn.net/levon2018/article/details/81746613 1.清理下载的软件包 不过与你想象的可能有很大的不同,Ubuntu系统在运 ...
- P4735 最大异或和
题目链接 题目描述 给定一个非负整数序列{a},初始长度为N. 有M个操作,有以下两种操作类型: A x:添加操作,表示在序列末尾添加一个数x,序列的长度N+1. Q l r x:询问操作,你需要找到 ...
- 关于Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/springmvc-demo-01-start]]出错的解决方法
出错的详情: 严重: A child container failed during start java.util.concurrent.ExecutionException: org.apache ...
- nl命令
nl (Number of Lines) 将指定的文件添加行号标注后写到标准输出.如果不指定文件或指定文件为"-" ,程序将从标准输入读取数据. 选项: -b, --body-nu ...
- java设计模式自我总结---代理模式
代理模式是给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用,通俗的来讲代理模式就是我们生活中常见的中介. Spring 的AOP面向切面就是使用动态代理模式来实现的: 打个比方说:我要买房 ...