一些你可能不注意的知识点
2018-01-26 本文已影响0人
VictorBXv
- 关于
&
,|
,^
几种运算符- 与运算:同为1,才为1
a&b < min(a,b)
,即两个数做与运算,计算出来的结果会比两个数中最小的数还要小 - 或运算:只要有一个为1,就为1
2*max(a,b)> a|b >max(a,b)
,即两个数做或运算,计算出来的结果比两个数中最大的数还要大,但是不会大于最大的数的二倍 - 异或运算:不同才为1
a^b
计算出来的结果不确定,既有可能比最小的数还小,也有可能比最大的数还大,也有可能在这两个数之间。
- 与运算:同为1,才为1
这几种运算符的计算结果是有其定义确定的
-
四分之三用位运算来实现
(capacity >> 1) + (capacity >> 2)
-
将任意一个数转换成2的幂次方
/** * 将任意一个数转换成2的幂次方 * 是2的幂次方的数的特点: * 2 =10=1+1 * 4 =100=11+1 * 8 =1000=111+1 * 16=10000=1111+1 * 32=100000=11111+1 */ private int roundUp2PowerOf2(int i) { i--; i = i >>> 1; i = i >>> 2; i = i >>> 4; i = i >>> 8; i = i >>> 16; return i; }