文档章节

“求余”

清尘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

© 著作权归作者所有

共有 人打赏支持
上一篇: 创建者模式
下一篇: java 交换数据
清尘V
粉丝 41
博文 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
算法学习之路|逆元取模(一)

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

kissjz
02/10
0
0
Python 基础练习 PAT水题(三)

#学习笔记 #用以练习python基础 # 原题链接:https://www.patest.cn/contests/pat-b-practise/1039 1039. 到底买不买(20) 小红想买些珠子做一串自己喜欢的珠串。卖珠子的摊主有很多串五颜六...

chaunceyjiang
2017/04/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Vue.js 3.0 新特性预览

Evan You(尤雨溪)(2018年11月16日)前几日的早上在 Vue Toronto 的主题演讲中预演了 Vue 3 。 利用现代浏览器支持的新功能,Vue 3 将成为我们已经了解和喜爱的 Vue.js 强大的的改进版本。...

我的卡
12分钟前
1
0
Mybatis自带连接池阅读

1、数据源初始化,初始化入口由SqlSessionFactoryBuilder.build(InputStream inputStream, String environment, Properties properties)方法提供 public SqlSessionFactory build(InputStre......

jcc_codingBoy
18分钟前
1
0
Oracle 数据库勒索病毒 RushQL 处理办法

Oracle 数据库勒索病毒 RushQL 处理办法 办法来自Oracle 官方: https://blogs.oracle.com/cnsupport_news/%E5%AF%B9%E6%95%B0%E6%8D%AE%E5%BA%93%E7%9A%84%E2%80%9C%E6%AF%94%E7%89%B9%E5%......

rootliu
19分钟前
2
0
聊聊flink LocalEnvironment的execute方法

序 本文主要研究一下flink LocalEnvironment的execute方法 实例 final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment(); DataSet<RecordDto>......

go4it
22分钟前
1
0
Spring Boot中对自然语言处理工具包hanlp的调用详解

概 述 HanLP 是基于 Java开发的 NLP工具包,由一系列模型与算法组成,目标是普及自然语言处理在生产环境中的应用。而且 HanLP具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点,...

左手的倒影
28分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部