文档章节

“求余”

清尘V
 清尘V
发布于 2016/04/15 15:58
字数 280
阅读 22
收藏 0

基础:

int length = 4;

定义长度为4(2^n),那么任何一个数如何使4的整数倍:则可以得出如下结论:

int b = 1....100;

即转换成2进制后最后两(n)位必定为0;

length-1=01111....1;

那么b&(length-1)即b的最低n位,也就是余数


假如有这么一种需求:

    发表博客添加标签,根据标签id设置标签显示不同颜色!

设计思路如下:

  •     先定义颜色数组:

String []colorArray={"blue","red","black","pink"};
  • 获取标签id

int id=100;
  • 获取数组长度

int size = colorArray.length;
  •     获取颜色:

  • 第一种方法:

String color = colorArray[id%size];
  • 第二种方法

String color = colorArray[id&(size-1)];
  1. 以上两种方法都可以取出所对应颜色

  2. 第一种方法是传统取余

  3. 第二种方法是采用交集方式,位运算,变相取余,效率高,结果等同于求余

  4. 第二种方式是在hashmap源码时看到的:获取数组索引

static int indexFor(int h, int length) {
    // assert Integer.bitCount(length) == 1 : "length must be a non-zero power of 2";
    return h & (length-1);
}



个人博客:http://www.whereta.com

© 著作权归作者所有

共有 人打赏支持
清尘V
粉丝 42
博文 107
码字总数 47780
作品 0
青岛
程序员
c语言最容易犯的6个错误

1.书写标识符时,忽略了大小写字母的区别。 编译程序把a和A认为是两个不同的变量名,而显示出错信息。 C认为大写字母和小写字母是两个不同的字符。 习惯上,符号常量名用大写,变量名用小写表...

陌尘_9353
2017/12/12
0
0
C语言基础学习运算符-基本算术运算符

基本算术运算符 C语言中用于基本算术运算的运算符有:+,-,,%,/。这些运算符的用法和你想像到的基本无异: 加法运算符 “+”使得它两侧的值被加到一起。 减法运算符“-”用它前面的数减去...

MayaTeacher
2016/09/14
15
1
游褒禅山记

游褒禅山记 朝代:宋代 作者:王安石 原文:   褒禅山亦谓之华山,唐浮图慧褒始舍于其址,而卒葬之;以故其后名之曰“褒禅”。今所谓慧空禅院者,褒之庐冢也。距其院东五里,所谓华山洞者,...

Betty__
2016/11/11
5
0
《从零开始学Swift》学习笔记(Day 10)——运算符是“ +、-、*、/ ”吗?

原创文章,欢迎转载。转载请注明:关东升的博客 运算符是用于执行程序代码运算,会针对一个或一个以上操作数项目来进行运算。例如:2+3,其操作数是2和3,而运算符则是“+”。那么“+、-、、/...

智捷课堂
2015/09/09
65
0
算法学习之路|逆元取模(一)

好了,今天轻松一点。逆元取模,一个小概念,在做ACM一些题目的时候必须要用到。终于下决心好好看一看了 ! 学习过程中遇到了模幂运算,即先进行幂运算,再进行模运算。转载自百度百科 概念:...

kissjz
02/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

你为什么在Redis里读到了本应过期的数据

一个事故的故事 晚上睡的正香突然被电话吵醒,对面是开发焦急的声音:我们的程序在访问redis的时候读到了本应过期的key导致整个业务逻辑出了问题,需要马上解决。 看到这里你可能会想:这是不...

IT--小哥
今天
2
0
祝大家节日快乐,阖家幸福! centos GnuTLS 漏洞

yum update -y gnutls 修复了GnuTLS 漏洞。更新到最新 gnutls.x86_64 0:2.12.23-22.el6 版本

yizhichao
昨天
5
0
Scrapy 1.5.0之选择器

构造选择器 Scrapy选择器是通过文本(Text)或 TextResponse 对象构造的 Selector 类的实例。 它根据输入类型自动选择最佳的解析规则(XML vs HTML): >>> from scrapy.selector import Sele...

Eappo_Geng
昨天
4
0
Windows下Git多账号配置,同一电脑多个ssh-key的管理

Windows下Git多账号配置,同一电脑多个ssh-key的管理   这一篇文章是对上一篇文章《Git-TortoiseGit完整配置流程》的拓展,所以需要对上一篇文章有所了解,当然直接往下看也可以,其中也有...

morpheusWB
昨天
5
0
中秋快乐!!!

HiBlock
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部