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:位移运算符的更多相关文章

  1. java位移运算符3 转

    https://www.cnblogs.com/winsker/p/6728672.html 移位运算符操作的对象就是二进制的位,可以单独用移位运算符来处理int型整数. 理解java移位运算符 运算 ...

  2. java位移运算符 转

    https://blog.csdn.net/qq_36134429/article/details/78286416#commentsedit java移位运算符不外乎就这三种:<<(左移 ...

  3. java位移运算符2 转

    https://blog.csdn.net/xxx134617/article/details/7454774 java中int类型占4个字节,二进制用补码表示: 3的二进制表示: 00000000 ...

  4. java 位移运算符

    import org.junit.Test; /** * 1)<< : 左移运算符 * 2)>> : 右移运算符 (测试正数) * 3)>> : 右移运算符 (测试 ...

  5. java位移运算符|And&,操作二进制

    在java中 逻辑运算符有四种:&  ,  |,  &&,  || &: 如果第一个条件是fasle,还会判断第二个条件,只要有一个条件不满足,结果就返回false; ...

  6. Java位运算符、位移运算符;原码、反码、补码

    文章背景:雪花算法 id 生成长度问题. Java位运算符 - 异或运算符(^)<p>运算规则:两个数转为二进制,然后从高位开始比较,如果相同则为0,不相同则为1.</p> - ...

  7. Java补码表和位移运算符

    在java中数据都是以二进制的形式保存的. 但是我们看到的数据怎么是10进制的? 因为java展示之前会自动调用toString()方法 这里以4位2进制为例,4位2进制只能表示16个数,即0-15. ...

  8. Java学习路线:Java中的位移运算符介绍

    学习java本来就是一件日积月累的事情,或许你通过自学能掌握一些皮毛技术,学到java的一些基本大面,但想要做到精通,还是需要自己技术的日积月累和工作经验的不断积累. 今天给大家分享的技术知识是:ja ...

  9. Java 中位移运算符 >>,>>>,<<

    Java 中的三种位移运算符 java中有三种移位运算符 <<      :     左移运算符,num << 1,相当于num乘以2 >>      :     ...

  10. & 和 && 的区别,与(&)运算符、位移运算符(<< 、>>、>>>)的含义及使用(Java示例)

    & 和 && 的区别,与(&)运算符.位移运算符(<< .>>.>>>)的含义及使用(Java示例) 1. & 和 & ...

随机推荐

  1. 别跑了,看看脚下有木有money

       别跑了,看看脚下有木有money 1.长大论坛   本来是想做个博客的,无奈级别不够,博客过于复杂,所以就做了这个类似于贴吧的东西.在这里,你可以发帖:可以吐槽学校.可以向他人寻求帮助.甚至可以 ...

  2. IOS UIDevice距离传感器(打开 关闭)

    ●  什么是传感器 ●  传感器是一种感应\检测装置, 目前已经广泛应用于智能手机上 ●  iPhone5中内置的传感器有 ●  运动传感器\加速度传感器\加速计(Motion/Acceleromet ...

  3. 03_P52 课后作业

    1. 软件开发的早期阶段为什么进行可行性研究?应该从哪些方面研究系统的可行性? 1.进行可行性研究是为了该软件项目是否值得开发?是否具有经济效益?是否违反法律道德?是否技术可以实现?是否风险性高? 2 ...

  4. SQLServer用存储过程实现插入更新数据

    实现 1)有同样的数据,直接返回(返回值:0): 2)有主键同样,可是数据不同的数据,进行更新处理(返回值:2): 3)没有数据,进行插入数据处理(返回值:1). [创建存储过程] Create pr ...

  5. Sublime Text 插件 【转】

    好厉害,好漂亮. http://www.cnsecer.com/460.html 安装Sublime Text 3插件的方法: 朋友们,小站活着不容易,全靠广告费养着了,如果本文对你有帮助.麻烦动下手 ...

  6. Northwind数据库不能在SQL Server 2012上创建

    附加mdf文件不出意料会提示数据库格式无法兼容,试着通过脚本来创建,会有以下错误提示: Could not find stored procedure 'sp_dboption'. 原因是SQL Se ...

  7. 封装方法到对象(javascript)

    /*! * artDialog 5 * Date: 2012-03-21 * http://code.google.com/p/artdialog/ * (c) 2009-2012 TangBin, ...

  8. eclipse内存溢出解决

    1 查看内存: workspace/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs,在里面加上SH ...

  9. openresty安装配置 Ubuntu下

    1.进入openresty-1.11.2.4的压缩包木木,我这里是在“/usr/local/”下: 2.进入后执行[tar -xzvf openresty-1.11.2.4.tar.gz]进行解压 3 ...

  10. JAVA日期类图解