JAVA中的>>和>>>号以及<<号的作用
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中的>>和>>>号以及<<号的作用的更多相关文章
- Java中@Deprecated、@SupressWarning、@Override的作用
Annotation注解在 Java 中有着很广泛的,他是做为一种标识 为javac所识别.每一个注解 都对应这一个Java类 在java.lang包中 有三个注解 分别是 Deprecated ...
- Java中Class和单例类的作用与类成员的理解
Java中Class类的作用与深入理解 在程序运行期间,Java运行时系统始终为所有的对象维护一个被称为运行时的类型标识.这个信息跟踪着每个对象所属的类.JVM利用运行时信息选择相应的方法执行.而保存 ...
- Java中的package和Import关键字的作用
一.package关键的作用 1.包的概念 package翻译为包,本质上就是一个文件夹,通过包组织项目结构的过程,就是通过包对应的文件夹管理.java和.class文件的过程. 2.包的作用 通过包 ...
- java中 static,final,transient,volatile关键字的作用
static 和final static 静态修饰关键字,可以修饰 变量,程序块,类的方法: 当你定义一个static的变量的时候jvm会将将其分配在内存堆上,所有程序对它的引用都会指向这一个地址而 ...
- JAVA中String类的intern()方法的作用
一般我们变成很少使用到 intern这个方法,今天我就来解释一下这个方法是干什么的,做什么用的 首先请大家看一个例子: public static void main(String[] args) t ...
- Java中的static关键字和new关键字作用介绍
一.static关键字的作用 1.可以用于修改类的成员变量.代码块和类 通过static可以将类的成员声明为静态成员,静态的成员归属于整个类,而不是属于某个对象.无论通过类还是对象访问静态成员,操作的 ...
- Java中的super关键字和this关键字作用介绍
一.super关键字的作用 1.子类在构造方法中显示调用父类构造方法 super可以在子类的构造方法中显示调用父类的构造方法:并且这行代码必须出现在子类构造方法的第一行.原因:因为父类构造方法没有执行 ...
- java中static关键字的作用
java中static关键字主要有两种作用: 第一:为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关. 第二,实现某个方法或属性与类而不是对象关联在一起 简单来说,在Java语言中,s ...
- python中print()函数的“,”与java中System.out.print()函数中的“+”
python中的print()函数和java中的System.out.print()函数都有着打印字符串的功能. python中: print("hello,world!") 输出 ...
- java中的单引号和双引号
1.单引号引的数据 是char类型的,双引号引的数据 是String类型的:单引号只能引一个字符,而双引号可以引0个及其以上.char只是一个基本类型,而String 可以是一个类,可以直接引用.比如 ...
随机推荐
- JSONUtil(JAVA对象/List与json互转,xml与json互转)
package com.chauvet.utils.json; import java.io.BufferedReader; import java.io.File; import java.io.F ...
- Nginx正向代理配置
服务器端: server { resolver 8.8.8.8; resolver_timeout 5s; listen 0.0.0.0:8888; access_log /usr/local/ngi ...
- JavaScript高级程序设计第三版学习笔记(一)之数据类型区分详谈
null.NaN.undefined三者的区别是什么? 在初次接触到JavaScript的时候,傻傻的分不清null.NaN.undefined三者到底区别何在,在实际的项目开发中也因为这个问题而困惑 ...
- Python性能分析指南(未完成)
英文原文:http://www.huyng.com/posts/python-performance-analysis/ 译文:http://www.oschina.net/translate/pyt ...
- Tomcat安装(linux系统)
首先解压: 进入配置文件: 统一tomcat的编码,避免乱码的问题: 保存退出. 注意: 查看打开的端口: /etc/init.d/iptables status 开启端口: iptables -A ...
- centos Linux下磁盘管理 parted,df ,du,fdisk,partprobe,mkfs.ext4,mount,/etc/fstab,fsck,e2fsck,mk2efs,tmpfs ,nr_inodes, LVM,传统方式扩容文件系统 第七节课
centos Linux下磁盘管理 parted,df ,du,fdisk,partprobe,mkfs.ext4,mount,/etc/fstab,fsck,e2fsck,mk2efs,tmpf ...
- python高级之Flask框架
目录: Flask基本使用 Flask配置文件 Flask路由系统 Flask模版 Flask请求与响应 Flask之Session Flask之蓝图 Flask之message 中间件 Flask插 ...
- SVN Checkout 不包括源文件夹根目录
SVN Checkout 不包括源文件夹根目录,比如我要checkout trunk/ 下面的所有文件,但是不包括trunk 文件夹 我们可以在svn文件夹后面打个空格,在加个“.”就行了 eg: ...
- vuejs和webpack项目(VueComponent)初尝试——瀑布流组件
碎碎念: 好久不见,最近自己有些懈怠没更过多少博,主要原因之一是对自己学习方式的一些思考,翻看之前的博客多是记录学习笔记这反映出了自己对于前端还停留在学习-复习知识点的阶段压根没多少实践经验啊 ...
- 跟我学Makefile(六)
shell 函数 :和反引号“`”是相同的功能 . shell 函数把执行操作系统命令后的输出作为函数返回. contents := $(shell cat foo) files := $(shell ...