public static void main(String[] args) {

         //右移2位,输出结果为2。二进制1000右移2位变为0010
System.out.println(8>>2);
//等同于 8除以2的3次方,即8/Math.pow(2,3)。输出为1
System.out.println(8>>>3); //左移2位,输出结果为8。二进制0010左移2位变为1000
System.out.println(2<<2);
//语法错误,不支持
System.out.println(8<<<3); }

1、 >>带符号右移。正数右移高位补0,负数右移高位补1
快速记忆:相当于除以一个值,正数除完后最小值为0,负数除完最大值为-1

2、 >>>无符号右移。无论是正数还是负数,高位通通补0
快速记忆:正数相当于除以一个值,最小值为0
负数比较麻烦,暂时没有找到快速记忆方法,有同学知道的可以告知

3、 <<表示左移,不分正负数,低位补0

快速记忆:不管正负数,相当于乘以一个数

 public static void main(String[] args) {
// >>带符号右移。正数右移高位补0,负数右移高位补1
System.out.println("====================== >>带符号右移 =========================================");
System.out.println("----------------正数举例----------------------");
// 8的2进制表示为1000
System.out.println(Integer.toBinaryString(8));
// 输出向右移动两位
System.out.println(8>>2);
// 输出向右移动两位的二进制0010 即:十进制的2
System.out.println(Integer.toBinaryString(8>>2));
System.out.println("-----------------正数超出位数举例---------------------"); System.out.println(Integer.toBinaryString(8));
System.out.println(8>>6);
System.out.println(Integer.toBinaryString(8>>6)); System.out.println("----------------负数举例----------------------");
System.out.println(Integer.toBinaryString(-8));
System.out.println(-8>>2);
System.out.println(Integer.toBinaryString(-8>>2));
System.out.println("-----------------负数超出位数举例---------------------"); System.out.println(Integer.toBinaryString(-8));
System.out.println(-8>>6);
System.out.println(Integer.toBinaryString(-8>>6));
// >>>无符号右移。无论是正数还是负数,高位通通补0
System.out.println("====================== >>>无符号右移 =========================================");
System.out.println("----------------正数举例----------------------");
System.out.println(Integer.toBinaryString(8));
System.out.println(8>>>2);
System.out.println(Integer.toBinaryString(8>>>2));
System.out.println("-----------------正数超出位数举例---------------------"); System.out.println(Integer.toBinaryString(8));
System.out.println(8>>>6);
System.out.println(Integer.toBinaryString(8>>>6)); System.out.println("----------------负数举例----------------------");
System.out.println(Integer.toBinaryString(-8));
System.out.println(-8>>>2);
System.out.println(Integer.toBinaryString(-8>>>2));
System.out.println("-----------------负数超出位数举例---------------------");
System.out.println(Integer.toBinaryString(-8));
System.out.println(-8>>>6);
System.out.println(Integer.toBinaryString(-8>>>6));
// <<表示左移,不分正负数,低位补0
System.out.println("====================== <<左移 =========================================");
System.out.println("----------------正数举例----------------------");
System.out.println(Integer.toBinaryString(8));
System.out.println(8<<2);
System.out.println(Integer.toBinaryString(8<<2)); System.out.println("----------------负数举例----------------------");
System.out.println(Integer.toBinaryString(-8));
System.out.println(-8<<2);
System.out.println(Integer.toBinaryString(-8<<2));
}

JAVA中的>>和>>>号以及<<号的作用的更多相关文章

  1. Java中@Deprecated、@SupressWarning、@Override的作用

    Annotation注解在 Java 中有着很广泛的,他是做为一种标识 为javac所识别.每一个注解 都对应这一个Java类  在java.lang包中 有三个注解  分别是 Deprecated  ...

  2. Java中Class和单例类的作用与类成员的理解

    Java中Class类的作用与深入理解 在程序运行期间,Java运行时系统始终为所有的对象维护一个被称为运行时的类型标识.这个信息跟踪着每个对象所属的类.JVM利用运行时信息选择相应的方法执行.而保存 ...

  3. Java中的package和Import关键字的作用

    一.package关键的作用 1.包的概念 package翻译为包,本质上就是一个文件夹,通过包组织项目结构的过程,就是通过包对应的文件夹管理.java和.class文件的过程. 2.包的作用 通过包 ...

  4. java中 static,final,transient,volatile关键字的作用

    static 和final static  静态修饰关键字,可以修饰 变量,程序块,类的方法: 当你定义一个static的变量的时候jvm会将将其分配在内存堆上,所有程序对它的引用都会指向这一个地址而 ...

  5. JAVA中String类的intern()方法的作用

    一般我们变成很少使用到 intern这个方法,今天我就来解释一下这个方法是干什么的,做什么用的 首先请大家看一个例子: public static void main(String[] args) t ...

  6. Java中的static关键字和new关键字作用介绍

    一.static关键字的作用 1.可以用于修改类的成员变量.代码块和类 通过static可以将类的成员声明为静态成员,静态的成员归属于整个类,而不是属于某个对象.无论通过类还是对象访问静态成员,操作的 ...

  7. Java中的super关键字和this关键字作用介绍

    一.super关键字的作用 1.子类在构造方法中显示调用父类构造方法 super可以在子类的构造方法中显示调用父类的构造方法:并且这行代码必须出现在子类构造方法的第一行.原因:因为父类构造方法没有执行 ...

  8. java中static关键字的作用

    java中static关键字主要有两种作用: 第一:为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关. 第二,实现某个方法或属性与类而不是对象关联在一起 简单来说,在Java语言中,s ...

  9. python中print()函数的“,”与java中System.out.print()函数中的“+”

    python中的print()函数和java中的System.out.print()函数都有着打印字符串的功能. python中: print("hello,world!") 输出 ...

  10. java中的单引号和双引号

    1.单引号引的数据 是char类型的,双引号引的数据 是String类型的:单引号只能引一个字符,而双引号可以引0个及其以上.char只是一个基本类型,而String 可以是一个类,可以直接引用.比如 ...

随机推荐

  1. Grafana+Prometheus监控

    添加模板一定要看说明以及依赖 监控redis https://blog.52itstyle.com/archives/2049/ http://www.cnblogs.com/sfnz/p/65669 ...

  2. 转!!mysql 字段 is not null 和 字段 !=null

      今天在查询数据时,查到包含一条某个时间startTime(该字段默认为null ) 为null的记录,想把它过滤,加了 startTime != null 的条件,结果记录都没了,应该用条件 is ...

  3. SQL和access随机数

    Access: CLng(Rnd(种子数字)*1000000)   SQL Server ceiling(rand(abs(checksum(newid())))*1000000)    

  4. android(十)smali

    Dalvik是google专门为Android操作系统设计的一个虚拟机,经过深度的优化.虽然Android上的程序是使用java来开发的,但是Dalvik和标准的java虚拟机JVM还是两回事. Da ...

  5. 第1章 1.3计算机网络概述--规划IP地址介绍MAC地址

    IP地址的作用是:指定发送数据者和接收数据者. MAC地址的作用:指定数据包的下一跳转设备.就是说明数据下一步向谁发. 路由器的作用:在不同的网段中转发数据.路由器本质就是有2个网卡的设备. 网卡:用 ...

  6. mysql查询乱码解决方法

    http://blog.csdn.net/u012408083/article/details/52734762 MySQL 命令行查询乱码 编码问题 当使用数据库工具查询数据时显示数据正常,中文也很 ...

  7. 'ascii' codec can't decode byte 0xc4 in position 27: ordinal not in range(128)

    This error happens when I try to run d:\linux\linuxkernel\android\内核\blog\BlogBackup(v1.1)source\htm ...

  8. (转)《SSO CAS单点系列》之 实现一个SSO认证服务器是这样的!

    上篇我们引入了SSO这个话题<15分钟了解SSO是个什么鬼!>.本篇我们一步步深入分析SSO实现机理,并亲自动手实现一个线上可用的SSO认证服务器!首先,我们来分析下单Web应用系统登录登 ...

  9. 3.12 Templates -- Wrting Helpers(编写辅助器)

    一.概述 1. Helpers允许你向你的模板添加超出在Ember中开箱即用的额外的功能.辅助器是最有用的,用于将来自模型和组件的原始值转换成更适合于用户的格式. 2. 例如,假设我们有一个Invoi ...

  10. C++语言中的四种类型转换

    1 引子 这篇笔记是根据StackOverflow上面的一个问题整理而成,主要内容是对C/C++当中四种类型转换操作进行举例说明.在之前其实对它们都是有所了解的,而随着自己在进行总结,并敲了一些测试示 ...