美文网首页
LRUCache原理

LRUCache原理

作者: 零宽度接合 | 来源:发表于2017-10-12 23:12 被阅读13次

roundUpToPowerOfTwo(int i)

获取大于等于 某个整数 并且是 2 的幂数的整数

publicstaticintroundUpToPowerOfTwo(inti) {  i--;// If input is a power of two, shift its high-order bit right.// "Smear" the high-order bit all the way to the right.i |= i >>>1;  i |= i >>>2;  i |= i >>>4;  i |= i >>>8;  i |= i >>>16;returni +1;}

可以看到这个算法进行了 5 次移位操作,乍一看,一脸懵逼,这是在干嘛?

细细一想啊,我现在要获取一个是 2 的幂数的整数,那其二进制的表现形式就是其最高位为1 ,低位全部为 0;或者其低位全部为 1,只需再对其加 1,即可变成 2 的倍数。

举个例子:

1000 0000

0100 0000 // 无符号右移一位

1100 0000 // 上面两个执行或操作的结果

1100 0000

0011 0000 // 无符号右移二位

1111 0000 // 上面两个执行或操作的结果

1111 0000

0000 1111 // 无符号右移三位

1111 1111 // 上面两个执行或操作的结果

其实我们只需将我们的关注点放置其元素为1的最高位上,执行右移操作,紧接着是或操作,最后的结果就是将高位的1,向后涂抹 (smear),全部变为1。

移位5次的原因在于 Java 中的整数是32位的,正好是2的 5次方。

算法刚开始的减一操作,则是为了防止刚开始传入的数字便是 2 的幂数。用来保证最终的结果是大于等于传入的参数的值。

相关文章

  • Android 高级面试-3:Java、同步和并发相关

    1、Java 相关 1.1 缓存相关 LruCache 的原理 DiskLruCache 的原理 LruCache...

  • (1)LruCache原理分析

    浅析LruCache原理 Android用LruCache(Least recently use Cache 意...

  • Android缓存原理

    本文主要内容 LruCache使用 LruCache原理 DiskLruCache使用 DiskLruCache原...

  • 面试题

    LruCache原理 LruCache 即最近最少使用内存(Least recently usage cache)...

  • Java基础_LruCache工作原理

    本文主要从如下节点讲解 LRU算法简介 LruCache的简介 LruCache的代码实操 LruCache的原理...

  • 缓存分析

    LruCache与DiskLruCache 文章目录 一 Lru算法 二 LruCache原理分析2.1 写入缓存...

  • Android常问的面试题(二)

    (一)图片 1、图片库对比 2、LRUCache原理 LruCache是个泛型类,主要原理是:把最近使用的对象用强...

  • LRUCache原理

    讲到LruCache不得不提一下LinkedHashMap,因为LruCache中Lru算法的实现就是通过L...

  • LRUCache原理

    Least Recently Used => LRU:最近最少使用算法 为什么使用LRUcache?Android...

  • LRUCache原理

    roundUpToPowerOfTwo(int i) 获取大于等于 某个整数 并且是 2 的幂数的整数 publi...

网友评论

      本文标题:LRUCache原理

      本文链接:https://www.haomeiwen.com/subject/ahkayxtx.html