Java:位移运算符
Java中有三个位移运算符,用于对int类型整数的二进制补码进行操作:
1. "<<": 左移运算符
在二进制补码末尾添加“0”,之前的其他位相当于左移了一位,可看作成“乘以二”操作。
例如,a = 10,a 的二进制表示为“0000 0000 0000 0000 0000 0000 0000 1010”,“a << 1”表示a的二进制表示左移一位,结果为“0000 0000 0000 0000 0000 0000 0001 0100”,对应十进制的“20”。
b =-10, b 的二进制表示为“1111 1111 1111 1111 1111 1111 1111 0110”,“b<<1”代表b的二进制表示左移一位,结果为“1111 1111 1111 1111 1111 1111 1110 1100”,对应十进制“-20”。
2. ">>": 右移运算符
去掉二进制补码末尾几位,并在最前面添加符号位,正数添“0”、负数添“1”。">>1"去掉最后一位,">>2"去掉最后两位。不能单纯的看作成“除以二”操作。
例如,a = 9, “a>>1"代表a的二进制补码“0000 0000 0000 0000 0000 0000 0000 1001”右移一位,结果为“0000 0000 0000 0000 0000 0000 0000 0100”,对应十进制的“”(不是“除以二”操作)。
b = -9,“b>>1”代表b的二进制补码“1111 1111 1111 1111 1111 1111 1111 0111”右移一位,结果为“1111 1111 1111 1111 1111 1111 1111 1011”,对应十进制的“-5”。
3. ">>>": 无符号右移运算符
不再考虑符号位,在最前面添加“0”。(正数前面的“0”符号位可以省略)
例如,b = -9,“b >>> 1”代表b的二进制补码“1111 1111 1111 1111 1111 1111 1111 0111”右移一位,结果为“0111 1111 1111 1111 1111 1111 1111 1011”,对应十进制的“2147483643”。
public class Test {
public static void main(String[] args) {
int a = -9;
System.out.println("a = " + a);
System.out.println("a的二进制表示: " + Integer.toBinaryString(a));
System.out.println("");
// "<<"左移运算符
int a1 = a << 1;
System.out.println("a<<1 = " + a1);
System.out.println("a<<1后的二进制表示: " + Integer.toBinaryString(a1));
System.out.println("");
// ">>"右移运算符
int a2 = a >> 1;
System.out.println("a>>1 = " + a2);
System.out.println("a>>1后的二进制表示: " + Integer.toBinaryString(a2));
System.out.println("");
// 无符号右移运算符
int a3 = a >>> 1;
System.out.println("a >>> 1 =" + a3);
System.out.println("a>>>1后的二进制表示: " + Integer.toBinaryString(a >>> 1));
}
}
运行结果:

2018-01-02 18:51:21
Java:位移运算符的更多相关文章
- java位移运算符3 转
https://www.cnblogs.com/winsker/p/6728672.html 移位运算符操作的对象就是二进制的位,可以单独用移位运算符来处理int型整数. 理解java移位运算符 运算 ...
- java位移运算符 转
https://blog.csdn.net/qq_36134429/article/details/78286416#commentsedit java移位运算符不外乎就这三种:<<(左移 ...
- java位移运算符2 转
https://blog.csdn.net/xxx134617/article/details/7454774 java中int类型占4个字节,二进制用补码表示: 3的二进制表示: 00000000 ...
- java 位移运算符
import org.junit.Test; /** * 1)<< : 左移运算符 * 2)>> : 右移运算符 (测试正数) * 3)>> : 右移运算符 (测试 ...
- java位移运算符|And&,操作二进制
在java中 逻辑运算符有四种:& , |, &&, || &: 如果第一个条件是fasle,还会判断第二个条件,只要有一个条件不满足,结果就返回false; ...
- Java位运算符、位移运算符;原码、反码、补码
文章背景:雪花算法 id 生成长度问题. Java位运算符 - 异或运算符(^)<p>运算规则:两个数转为二进制,然后从高位开始比较,如果相同则为0,不相同则为1.</p> - ...
- Java补码表和位移运算符
在java中数据都是以二进制的形式保存的. 但是我们看到的数据怎么是10进制的? 因为java展示之前会自动调用toString()方法 这里以4位2进制为例,4位2进制只能表示16个数,即0-15. ...
- Java学习路线:Java中的位移运算符介绍
学习java本来就是一件日积月累的事情,或许你通过自学能掌握一些皮毛技术,学到java的一些基本大面,但想要做到精通,还是需要自己技术的日积月累和工作经验的不断积累. 今天给大家分享的技术知识是:ja ...
- Java 中位移运算符 >>,>>>,<<
Java 中的三种位移运算符 java中有三种移位运算符 << : 左移运算符,num << 1,相当于num乘以2 >> : ...
- & 和 && 的区别,与(&)运算符、位移运算符(<< 、>>、>>>)的含义及使用(Java示例)
& 和 && 的区别,与(&)运算符.位移运算符(<< .>>.>>>)的含义及使用(Java示例) 1. & 和 & ...
随机推荐
- OC 内存管理(retain和release)
内存管理 retain和release简单使用 #import "Student.h" @implementation Student @synthesize age = _age ...
- 设计模式——抽象工厂模式(AbstractFactoryPattern)
抽象工厂模式(AbstractFactory):提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类. UML图: IFactory: package com.cnblog.clarck ...
- javascript字面量
在JavaScript里面,字面量包括:字符串字面量(string literal ).数组字面量(array literal)和对象字面量(object literal),另外还有函数字面量(fun ...
- PS中会使用到的快捷键有那些?
P.S:我刚刚在百度上,搜了一些关于PS的快捷键的使用. 我把它总结了一下.对我今后的P图有所帮助. PS的所有快捷键 1. 显示/隐藏选择区域 [Ctrl]+[H] 2. 取消当前命令:Esc: 工 ...
- Android onMeasure 方法的测量规范MeasureSpec
一个MeasureSpec封装了父布局传递给子布局的布局要求,每个MeasureSpec代表了一组宽度和高度的要求.一个MeasureSpec由大小和模式组成.它有三种模式:UNSPECIFIED(未 ...
- UVA - 136 Ugly Numbers(丑数,STL优先队列+set)
Ugly numbers are numbers whose only prime factors are 2, 3 or 5. The sequence 1, 2, 3, 4, 5, 6, 8, 9 ...
- 我和我的广告前端代码(六):webpack工程合并、也许我不需要gulp
随着年初开始使用webpack重构公司的广告代码,已经有将近一年的时间了,需求也渐渐的稳定了.我想也是时候将这几个工程整理一下,顺带着处理一些历史问题. 由于当年各个业务线没有整合.需求也没有固定,考 ...
- Knowledge Point 20180305 数据在计算机中的表示
计算机发明的初衷就是用于帮助我们加工和处理数据,虽然时至今天计算机看起来无所不能,但它根本上还是在做数据的加工和处理,数据的机器层次表示将直接影响到计算机的结构和性能. 在计算机中,采用数字化方式来表 ...
- ETO的公开赛T5《猎杀蓝色空间号》题解
这道题别看题面这么长,其实题意很简单 就是让你求从起点开始的最长合法区间 合法的要求有两个:兜圈子和直飞 且这两个条件相互独立 (也就是说兜圈子的末尾不会对下面可能出现的直飞造成影响) 举个例子: 1 ...
- python核心编程2 第十三章 练习
13-3.对类进行定制.写一个类,用来将浮点型值转换为金额. class MoneyFmt(object): def __init__(self, value=0.0, flag='-'): self ...