Java 运算符在实际开发中的应用

一、位运算符

Java 定义了位运算符,应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)等类型。
位运算符作用在所有的位上,并且按位运算。假设 A = 60,B = 13; 它们的二进制格式表示将如下:

	A = 0011 1100
	B = 0000 1101
-----------------
A & B = 0000 1100
A | B = 0011 1101
A ^ B = 0011 0001
   ~A = 1100 0011

下面是一种二进制换算成十进制的方式:

0011  1100
8421  8421
  |    |
 2+1  8+4
  |    |
3*16^1+12*16^0=60

下表列出了位运算符的基本运算,假设整数变量 A 的值为 60 和变量 B 的值为 13:

操作符名称描述例子
如果相对应位都是1,则结果为1,否则为0(A&B)得到 12,即 0000 1100
|如果相对应位都是0,则结果为0,否则为1(A | B)得到 61,即 0011 1101
^异或如果相对应位值相同,则结果为0,否则为1(A ^ B)得到 49,即 0011 0001
非/取反按位取反,翻转操作数的每一位,即0变成1,1变成0(〜A)得到 -61,即 1100 0011
<<左移按位左移,左操作数按位左移右操作数指定的位数A << 2 得到 240,即 1111 0000
>>右移按位右移,左操作数按位右移右操作数指定的位数A >> 2 得到 15,即 1111
>>>无符号右移按位右移补零,左操作数的值按右操作数指定的位数右移,
移动得到的空位以零填充
A >>> 2 得到 15,即 0000 1111
例子1:用最有效率的方法算出 2 乘以 8 等于几
2 << 3(相当于:2*2^3 == 2*8

将一个数左移 n 位,就相当于乘以了 2 的 n 次方,那么,一个数乘以 8 只要将其左移 3 位即可,而位运算是 cpu 直接支持的,效率最高,所以,2 乘以 8 等于几的最效率的方法是 2 << 3。

例子2:用位运算 & 取代 % 取模

关系如下:

 X % 2^n = X & (2^n – 1)

也就是说,用位运算 & 来取代 % 取模需要被取模的数必须是2的幂才成立,如:

 n % 4 = n & 3
 n % 8 = n & 7

对 % 和 & 进行了一个简单的性能测试,对 0~Integer.MAX 所有的数分别 % 和 & ,消耗的时间如下:

 % time: 1.847528994 sec
 & time: 0.00163733 sec

参考文章:
1、http://www.runoob.com/java/java-operators.html
2、https://blog.csdn.net/johnny901114/article/details/80456833

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值