博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java中的“>”、“>>”、“>>>”三个符号的区别
阅读量:3960 次
发布时间:2019-05-24

本文共 1075 字,大约阅读时间需要 3 分钟。

概述

在读jdk源码时, 我们不难发现,有很多关于运算的编码我们在日常开发中,很少运用到,特别是专注于J2EE开发的朋友们,运算 的世界里,永远和进制挂钩,当然我们这就不赘述太多。

“>”的使用

这个符号在小学就应该知道, 大于符号。在编程中即作为condition来操作,比较简单。

示例:

if (i > 9) {	//TODO: 大于9的逻辑;}

“>>”的使用

这是一个“有符号”右移运算符,意思就是当使用该运算符操作时,数据是区分正负的,当为正数时,移位后高位全补“0”,当为负数时,高位全补“1”。面举例说明:

/* 分别计算 12 >> 2 和 -12 >> 2 的结果: * -------------------------------------------------- */1. 12 >> 2在做运算前,我们需要将十进制数转成二进制数,即可直观看出运算逻辑。12的二进制数为(int类型为32bit):0000 0000 0000 0000 0000 0000 0000 1100右移,顾名思义即将二进制的每一位数都向右移位,这里12移动2位后,高位补0:0000 0000 0000 0000 0000 0000 0000 0011转换为十进制数后为:3所以 12 >> 2 = 32. -12 >> 2-12的二进制数为:1111 1111 1111 1111 1111 1111 1111 0100延伸:负数的二进制,即正数的补码(其正数的反码加1)12的反码:1111 1111 1111 1111 1111 1111 1111 0011补码(反码+1):1111 1111 1111 1111 1111 1111 1111 0100 //注意:二进制加法是遇2进1,类似于十进制加法是遇10进1故-12的二进制即:1111 1111 1111 1111 1111 1111 1111 0100向右移2位,高位补1:1111 1111 1111 1111 1111 1111 1111 1101转换位十进制数后为:-3 //高位为符号位,1为- 0为+,所以转化时:-(1*2^30 + 1*2^29 + .... + 0*2^1 + 1*2^0)

“>>>”的使用

说到这里,主要讲一下“>>”和“>>>”的区别,就能明白怎么运算了。“>>>”表示运算中是无符号的,所以运算是不分正负d的,即:

1. 12 >> 2 == 12 >>> 2 == -12 >>> 22. -12 >> 2 != -12 >>> 2

 

转载地址:http://lwozi.baihongyu.com/

你可能感兴趣的文章
位运算(含应用)
查看>>
野指针与空指针
查看>>
图文混排效果
查看>>
urllib2.urlopen超时问题
查看>>
Choosing a Machine Learning Classifier
查看>>
魏兴国:深入浅出DDoS攻击防御
查看>>
使连续的参考文献能够中间用破折号连起来
查看>>
Discover Feature Engineering, How to Engineer Features and How to Get Good at It
查看>>
36辆车,6条跑道,无计时器,最少几次比赛可以选出前三
查看>>
matlab2012b与matlab7.1执行set(gca,'Yscale','log')之后画到的直方图结果居然不同
查看>>
python读大文件
查看>>
python 3里没有cmp这个函数了
查看>>
回文题
查看>>
二叉树的最短根到叶路径中点的个数
查看>>
给定二叉树求最小深度
查看>>
平衡树
查看>>
栈的应用题(1)
查看>>
判断链表是否有环
查看>>
从有序链表中去掉重复的
查看>>
后台程序结果重定向到文件,结果看不到文件?缓冲区的问题
查看>>