小白学习之路(二):java 中> , >> , >>>的区别
来源:互联网 发布:淘宝客推广链接被篡改 编辑:程序博客网 时间:2024/05/21 07:52
今天在看ArrayList的源码的时候,突然发现有这样一个操作符 >> ,第一感觉就是C++里面的cout<< , cin>>,但貌似我看的JDK源码啊 = =。于是乎立马去百度百度,了解了下java中> , >> , >>> 三者的区别。以下是个人学习心得,个人学习记录,如有错误,欢迎大家纠正。
最常见的> 和 < ,就不在这里细说了啊。直接说>>的作用。在计算机中,各种机器数用二进制补码的形式存在,并且各种运算操作都转换乘补码形式的加法。而 int num = 5; num = num >> 1; 的意义为将num的的二进制补码右移一位,可想而知, num << 1 的意义为将Num的二进制补码左移一位。另外,稍微补充一下,正数的二进制补码形式无论左移或者右移都补0,负数的二进制补码形式左移补0,右移补1。
至于 >>>,意义就是无视符号位,右移。(值得注意的是,java好像并没有 <<< ,网上说是左移不会引起符号位变化,所以和 << 作用一样)
以下是例子。
public class Test {public static void main(String[] args) {// TODO Auto-generated method stubint num = -5;System.out.println("first:");toBinary(num);System.out.println("Second:");num = num >> 1;//右移一位toBinary(num);System.out.println("Third:");num = -5;num = num << 2;//左移2位toBinary(num);System.out.println("Forth:");num = -5;num = num >>> 1;//无视符号位右移一位toBinary(num);}public static void toBinary(int i ){System.out.println(Integer.toBinaryString(i));System.out.println("length:"+Integer.toBinaryString(i).length());}}运行结果:
由于int 类型数占4个字节,即32位。最后的length:31 原因是忽略符号位右移一位,即可等同与正数二进制补码右移一位,添0, 0不做显示。
0 0
- 小白学习之路(二):java 中> , >> , >>>的区别
- 编程小白的学习之路(二)
- Java学习之小练习二
- JAVA 学习小白之路
- 数值分析小白学习之路(二) 插值法
- java 学习之二 中for循环的使用注意事项
- 小白学习之路(一):stringbuilder ,stringbuffer,string区别
- 小白的Spring学习之路
- 一个小白的学习之路
- java学习笔记之java基础中那些被忽略的小知识点
- scala学习之scala与java的一些区别(二)
- 小白的jsp学习笔记二
- 新手小白的Java之路
- 学习过程中遇到的小问题(二)
- java编程学习日志 第一课:小白的奋斗之路
- Java研发学习之路小回顾
- 我的java学习之路(二)
- 我的Java学习之路( 二 )
- ewebEditor 更改上传文件时不要重命名
- XPP3 即 MXP1--一个非常快的XML解析器
- String创建对象理解
- IE7 float:right 时元素换行 的bug解决办法
- Ubuntu14.04搭建FFMPEG + SDL + CodeBlocks开发环境
- 小白学习之路(二):java 中> , >> , >>>的区别
- Window7 (64位) 上安装Theano 0.7的快捷方法
- SQLServer 复制中移除和添加发布而不初始化所有项目
- 解决hr分割线在IE中存在默认边距问题
- 《左耳》有感
- 开发基于大数据平台的搜索引擎
- Android学习之-RecyclerView带刺的玫瑰
- Java IO流 异常日志制作
- 面试10大算法汇总