java基础之位运算
java中常见的位运算符:&(逻辑与) |(逻辑或) ~(取反) ^(逻辑异或) >>(右移) <<(左移) >>>(无符号右移)
&(逻辑与):
true&true=true
true&false=false
false&true=false
false&false=false
结论:左右两边同真为真,一假为假。
&还可以用于位运算,位运算都需要换算成二进制进行运算
例:4&6=4
0100 4
& 0110 6
0100 4
原理同它的逻辑运算一样,两边都是1的时候为1,有一个是0为0
|(逻辑或):
true&true=true
true&false=true
false&true=true
false&false=false
结论:左右两边一真为真,同假为假。
|还可以用于位运算,位运算都需要换算成二进制进行运算
例:4|6=6
0100 4
& 0110 6
0110 6
原理同它的逻辑运算一样,两边都是0的时候为0,有一个是1为1
~(取反)
取反就是把二进制0变成1,1变成0
例:对十进制6进行取反
6---------0000-0000 0000-0000 0000-0000 0000-0110
~
1111-1111 1111-1111 1111-1111 1111-1001----------这个数就是6取反得到的
^(逻辑异或)
两边相同为false,不同为true
true^true=false
true&false=true
false&true=true
false&false=false
例:8^4=12
8---------0000-0000 0000-0000 0000-0000 0000-1000
4---------0000-0000 0000-0000 0000-0000 0000-0100
0000-0000 0000-0000 0000-0000 0000-1100
PS:一个数异或同一个数两次,结果还是那个数。 例:8^4^4=8
<<(左移) 左移相当于把该数乘以2的n次方,(n是移动的位数)
例:3<<2=12
就是把3的二进制表现形式整体向左移动两位,右边空位补0
3-----------0000-0000 0000-0000 0000-0000 0000-0011
<<
0000-0000 0000-0000 0000-0000 0000-1100 -----------12
>>(右移) 右移相当于把该数除以2的n次方,(n是移动的位数)
例:3>>2=0
就是把3的二进制表现形式整体向右移动两位,左边高位空缺,原有最高位是什么,补什么(是0补0,是1补1)
3-----------0000-0000 0000-0000 0000-0000 0000-0011
>>
0000-0000 0000-0000 0000-0000 0000-0000 -----------0
>>>(无符号右移)
右移后,高位缺失,不管原有最高位是什么。都补0.
负数二进制表现形式:
就是把该数的正数二进制表现形式取反后+1
以6为例
6---------0000-0000 0000-0000 0000-0000 0000-0110
~
1111-1111 1111-1111 1111-1111 1111-1001----------这个数就是6取反得到的
+1 0000-0000 0000-0000 0000-0000 0000-0001
1111-1111 1111-1111 1111-1111 1111-1010----------这个数就是-6
注意:负数的最高位是1,正数的最高位是0。
java基础之位运算的更多相关文章
- java ----> 基础之位运算
package test.ant; import java.util.Arrays; import java.io.UnsupportedEncodingException; public class ...
- Java二进制和位运算,这一万字准能喂饱你
基础不牢,地动山摇.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习.关注公众号[BAT的乌托 ...
- Java中的位运算
昨天去面试的时候做到了一道Java的位运算题目,发现有个运算符不懂:">>>",今天特地查了一下,并小结一下常见的位运算符号: ~ 按位非(NOT)(一元运算) ...
- Java学习之位运算和逻辑运算符
今天看了一下HashMap类的源码,在HashMap的源码中定义了初始空间的大小 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; 当 ...
- Java 基本数据类型 && 位运算
1. Java基本数据类型 1.1 数据类型示意图 类型 字节数 范围 byte 1 -128~127 short 2 -32768~32767 int 4 -231~231-1 long 8 -26 ...
- [java基础] 002 - 位运算符的详解和妙用
一:位运算符详解 位运算符主要用来对操作数二进制的位进行运算.按位运算表示按每个二进制位(bit)进行计算,其操作数和运算结果都是整型值. Java 语言中的位运算符分为位逻辑运算符和位移运算符两类, ...
- Java中的位运算及简单的算法应用介绍
众所周知,计算机底层是二进制.而java作为一门计算机编程语言,也对二进制的位运算提供了完整的支持. 在java中,int是32位的,也就是说可以用来实现32位的位运算.方便起见,我们一般用16进制对 ...
- day04-Python运维开发基础(位运算、代码块、流程控制)
# (7)位运算符: & | ^ << >> ~ var1 = 19 var2 = 15 # & 按位与 res = var1 & var2 " ...
- java中通过位运算实现多个状态的判断
通过 << | & ~ 位运算,实现同时拥有多个状态 通过 << 定义数据的状态 public interface LogConstants { /** * 消耗标 ...
随机推荐
- WebGL 高级技术
1.如何实现雾化 实现雾化的方式由多种,这里使用最简单的一种:线性雾化(linear fog).在线性雾化中,某一点的雾化程度取决于它与视点之间的距离,距离越远雾化程度越高.线性雾化有起点和终点,起点 ...
- MFC使用SQLite 学习系列 一: SQLITE_MISUSE错误
一 为什么要选择SQLite 由于使用文本文件来记录测试数据,速度越来越慢的问题,经过园友推荐,使用了SQLite来进行数据的存储,再次感谢园友@LightSmaile. 关于这个问题,可以参考一下上 ...
- ArrayList,LinkedList的对比
ArrayList,LinkedList都是Collection接口的通用实现方式,两者采用了不用的存储策略,用来适应不同场合的需要. 实现方式 ArrayList的内部采用集合的方式存储数据 唯一需 ...
- Jax-ws 开发webService ,并使用spring注入service类
由于使用myeclipse自动生成的Delegate,所以在使用service实现层的时候,默认创建的时候都是使用new的方法: 这样就导致每一次请求过来都得new一个新的:如果service有注入其 ...
- 0.0 ABP官方文档翻译目录
一直想学习ABP,但囿于工作比较忙,没有合适的契机,当然最重要的还是自己懒.不知不觉从毕业到参加工作七年了,没留下点儿什么,总感觉很遗憾,所以今天终于卯足劲鼓起勇气开始写博客.有些事能做的很好,但要跟 ...
- 清北Day4
版权声明:如需转载请标明出处,未得到本人许可请勿转载. 今天就可以看到传说中的 数据结构 嘿嘿嘿嘿 都有什么呢 链表 队列 栈 st表 hash 线段树 树链剖分 一.栈: 放出来这个看烂了的图 值得 ...
- poj2653线段相交判断
Stan has n sticks of various length. He throws them one at a time on the floor in a random way. Afte ...
- Quartz (一)
1 核心接口 1.1 Scheduler---核心调度器 1.2 Job---任务 1.3 JobDetail---任务描述 1.4 Trigger---触发器 2 触发器 Tigger(CornTr ...
- Brief introduction to Java String Split 【简单介绍下Java String Split】
Split is a common function in Java. It split a full string to an array based on delimeter. For examp ...
- PHP实现类似于MySQ L的group by 效果
简单版本:只用于获取组数据 其实就是将键值变成键,遍历的时候键相同的会覆盖 $res[$v['country']] [] 可以 = 1,无关紧要