【java提高】(17)---Java 位运算符
Java 位运算符 &、|、^、~、<<、>>
以前学过有关java的运算符,不过开发了这么久也很少用过这个。现在由于开发需要,所以现在再来回顾整理下有关java的运算符。
主要运算符有以下:与(&)
、或(|)
、异或(^)
、取反(~)
、左移(<<)
、右移(>>)
。
一 与(&) 和 (|)
1、&(按位与)
规则
:将两边的数转换为二进制位,然后运算最终值。运算规则即(两个为真才为真
)1&1=1 , 1&0=0 , 0&1=0 , 0&0=0。
举例
:
4&7 这个运算的结果是多少?
3&5 这个运算的结果是多少?
2、|(按位或)
规则
将两边的数转换为二进制位,然后运算最终值。不同的是运算规则(一个为真即为真
)1|0 = 1 , 1|1 = 1 , 0|0 = 0 , 0|1 = 1
举例
3|6 这个运算的结果是多少?
5|9 这个运算的结果是多少?
二、异或(^) 和 取反(~)
1、异或(^)
规则
异就是不同,其运算规则为1^0 = 1 , 1^1 = 0 , 0^1 = 1 , 0^0 = 0
举例
3^6 这个运算的结果是多少?
5^9 这个运算的结果是多少?
2、取反(~)
规则
取反就是1为0,0为1。
举例
~5 这个运算的结果是多少?
这个其实就是,就是把1变0,0变1。
注意
:二进制中,最高位是符号位 1表示负数,0表示正数。
~15 这个运算的结果是多少?
三、左移运算(<<) 和 右移运算(>>)
1、左移运算(<<)
规则
左移就是把所有位向左移动几位。
举例
6 << 2 这个运算的结果是多少?
9 << 2 这个运算的结果是多少?
公式
M << n 其实可以这么算 M << n = M * 2^n
2、右移运算(>>)
规则
这个跟左移运算大体是一样的,但是还是有点不同的,不同点在于对于正数和负数补位的时候补的不一样,负数补1,正数补0
举例
12 >> 2 这个运算的结果是多少?
-9 >> 2 这个运算的结果是多少?
从这里就可以看出 正数右移补0,负数右移补1。
四、负数的进制表示
我们来思考下
1、负的十进制的转二进制
对于十机制的负数,如何用二进制来表示:
思路三步曲
: 1、正数二进制 2、反码 3、反码+1
举例
:
-1 如何转换成二进制?
说明
-1在计算机里用二进制表达就是全1
2、负的二进制转十进制
上面思路是负的十进制转二进制,那么同样负的二进制转10进制跟上面相反就可以了。
思路三步曲
1、负数的二进制码 2、二进制码-1 3、取反
举例
1111 1101 如何转换成十进制?
参考
3、Java基础——十进制负数转换为二进制、八进制、十六进制
我相信,无论今后的道路多么坎坷,只要抓住今天,迟早会在奋斗中尝到人生的甘甜。抓住人生中的一分一秒,胜过虚度中的一月一年!(3)
【java提高】(17)---Java 位运算符的更多相关文章
- java学习笔记之位运算符
java的位运算符主要针对二进制数的位进行逻辑运算,主要包括以下几种的位运算符 1.与运算符(&) 与运算符的使用规律是两个操作数中位为1的时候结果为1,否则都是0,例如 3&5=1 ...
- Java基础——逻辑运算符、位运算符
逻辑运算符.位运算符.三元运算符 逻辑运算符 public class Demon05 { public static void main(String[] args) { ...
- Java提高篇——Java实现多重继承
多重继承指的是一个类可以同时从多于一个的父类那里继承行为和特征,然而我们知道Java为了保证数据安全,它只允许单继承.有些时候我们会认为如果系统中需要使用多重继承往往都是糟糕的设计,这个时候我们往往需 ...
- Java提高篇——Java 异常处理
异常的概念 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的. 比如说,你的代码少了一个分号,那么运行出来结果是提示是错误java.lang.Error:如果你用Syst ...
- java基础篇 之 位运算符
按位操作符 按位操作符用来操作基本数据类型中的单个"比特"(bit),即二进制位.按位操作符会对两个参数中对应的位执行布尔代数运算,并最终生成一个结果. 我们常用的按位操作 ...
- Java学习笔记——关于位运算符的问题
我就之直接贴图了!不想排版了! 有什么问题,欢迎大家指出,帮助我提高,谢谢!
- Java面试17|Java基础
Linux上配置Java基础环境: https://www.cnblogs.com/kerrycode/archive/2015/08/27/4762921.html 1.final相关 (1)fin ...
- 【java提高】---java反射机制
java反射机制 一.概述 1.什么是反射机制 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态 ...
- [java基础] 002 - 位运算符的详解和妙用
一:位运算符详解 位运算符主要用来对操作数二进制的位进行运算.按位运算表示按每个二进制位(bit)进行计算,其操作数和运算结果都是整型值. Java 语言中的位运算符分为位逻辑运算符和位移运算符两类, ...
- Java总结——常见Java集合实现细节(1)
Java提高——常见Java集合实现细节(1) 2018年04月18日 15:07:35 阅读数:25 集合关系图 Set和Map set代表一种集合元素无序.集合元素不可重复的集合 map代表一种由 ...
随机推荐
- 常见Code Review过程中发现的问题
软件环境:Spring MVC + MyBatis 主要体现在两个方面,一个是编码习惯问题,另一个是编码质量的问题.编码习惯主要有日志编写.代码注释以及编码风格的问题,而编码质量则与很多方面相关,比如 ...
- 5.Ray-Handler之ToReadHandler编写
如图右上角所示,Ray中有两类Handler(SubHandler和PartSubHandler),在使用中,SubHandler派生Actor的CoreHandler,PartSubHandler派 ...
- vue组件之间的传值——中央事件总线与跨组件之间的通信($attrs、$listeners)
vue组件之间的通信有很多种方式,最常用到的就是父子组件之间的传值,但是当项目工程比较大的时候,就会出现兄弟组件之间的传值,跨级组件之间的传值.不可否认,这些都可以类似父子组件一级一级的转换传递,但是 ...
- 关于Calendar的一些用法总结
import java.util.Calendar; import java.security.KeyStore.TrustedCertificateEntry; import java.text.D ...
- python面向对象编程小程序- 选课系统
选课系统 花了一晚上写的,可能还存在不足 1.程序框架 2.文件夹建立 D:/选课系统 |___api | |___common_api.py |___bil | |___common.py |___ ...
- 2019年7月22日 - LeetCode0004
https://leetcode-cn.com/problems/median-of-two-sorted-arrays/submissions/ 我的解法: 我看到了那个log的要求,也第一时间想到 ...
- C#编程之IList、List和ArrayList
额...今天看了半天Ilist<T>和List<T>的区别,然后惊奇的发现使用IList<T>还是List<T>对我的项目来说没有区别... 在C#中 ...
- 《VR入门系列教程》之17---发布第一个应用
发布运行 Unity可以支持多种目标平台的发布,包括:桌面端.Web端.移动端.游戏主机端. 发布运行之前的Cubes场景至桌面端,我们先选择File->Build Settin ...
- 深入分析Elastic Search的写入过程
摘要 之前写过一篇ElasticSearch初识之吐槽,不知觉竟然过去了两年了.哎,时光催人老啊.最近又用到了ES,想找找过去的总结文档,居然只有一篇,搞了半年的ES,遇到那么多的问题,产出只有这么点 ...
- springboot整合mybatis时无法读取xml文件解决方法(必读)
转 http://baijiahao.baidu.com/s?id=1588136004120071836&wfr=spider&for=pc 在springboot整合myba ...