位运算符偏解
来源:互联网 发布:临沂软件培训 编辑:程序博客网 时间:2024/05/29 08:26
java中位运算符有哪些?一般用于做什么?好像对于一般的开发人员来讲,位运算符的使用很少,只是偶尔在面试时会被问到最高效的2的三次方求解,然后知道说是位运算<<< 。但,其实不然,位运算在jdk中经常遇到,在高效的运算系统中经常遇到。这不,我在看Hash算法的时候就看到很多位运算符出现了,所以必须要掌握下了。各进制间的转换你有时间慢慢去学习吧。我这里只讲位运算符的偏解。
hashmap中有如下代码:
static int hash(int h) { // This function ensures that hashCodes that differ only by // constant multiples at each bit position have a bounded // number of collisions (approximately 8 at default load factor). h ^= (h >>> 20) ^ (h >>> 12); return h ^ (h >>> 7) ^ (h >>> 4); }
static int indexFor(int h, int length) { return h & (length-1); }
一共出现了三种位运算符>>> ^ &
>>> 右移 和>>运算结果值一样,只是要补位,即忽略正负,>>> 2 右移两位,就是除以2的平方; >>> 3 除以2的3次方;类推 >>> n除以2的n次方;有右移就当然有左移,符号换个方向,除变成乘。<<注意乘只有两个符号。
& 相当于%取模。例: 35 & 15 即为 35 % 16 ;35 &31 即为 35 % 32
^ 这个就比较有意思了。偏解定理:1.符号两边如果能被2整除,并且该值大于另一个值,该位运算即为加法。例:16^5=21 2.符号两边如果能被2整除,并且该值小于另一个值,该位运算即为减法。例:16^19=3
其他位运算,大家有兴趣偏解的,请继续。
- 位运算符偏解
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 淘宝实习回顾--校园招聘
- 在 Linux 下用户空间与内核空间数据交换的方式,第 1 部分: 内核启动参数、模块参数与sysfs、sysctl、系统调用和netlink
- 利用C语言中的回调函数实现策略模式
- 内存重叠问题,memcpy,memmov,strcpy
- 在JAVA中如何跳出当前的多重嵌套循环?
- 位运算符偏解
- Hbase--Quick Start
- zoj 1334
- 集合从原理的总结
- 用汇编的眼光看C++(之特殊函数)
- zoj1337
- 通过修改Gina.dll Windows指纹登录程序完成了-2
- 创业团队人才是关键!
- JSP隐式对象和EL表达式隐式对象的区别