您的位置 首页 java

你不了解的java位移操作符

通常我们会看到这样的面试题:请用最有效率的方法计算出2乘以8等于几?答案当然是使用位移操作符:

2 << 3;
 

因为直接操作的二进制位所以效率高。

位移操作符有如下特性,是很多初学者不知道的:

1、只能应用于byte,shot,int , long char ,而byte,shot,char在做 位运算 之前会先转换成int类型,当然结果也是int类型。long类型的位运算后结果为long。

2、(重点)位移的位数不能超过对应数据类型的最大位数。比如:

1 << 34;
 

位移操作符左边的左操作数为int类型占据4个字节32位,那么位移操作符右边指定的位移数不能超过32,超过32位后原数值的数据将全部丢失(因为都移没了),那么位移也就没有了意义。但是,上面的语句是可以运行的,运行的结果等同于:

1 << 2;
 

这是因为 位移的实际位数只使用右 操作数 的低5位。 对应上面的例子就是,位移的实际位数实际上是34对应的 二进制 的低5位所代表的的值。34转换成二进制位:100010。其后五位对应的值为2,所有实际的位移位数为2。

这么做就是为了防止位移的位数超过对应类型的最大位数。

当位移操作符左边的数值为long的时候位移的 实际位数只使用右操作数的低6位。 原因同上。

怎么样你了解了吗?

觉得有帮助就点击关注欧,我将持续分享简介明了的知识点。

文章来源:智云一二三科技

文章标题:你不了解的java位移操作符

文章地址:https://www.zhihuclub.com/200906.shtml

关于作者: 智云科技

热门文章

发表回复

您的电子邮箱地址不会被公开。

网站地图