文档章节

“求余”

清尘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
PTA-基础编程题目集-7-12 两个数的简单计算器

本题要求编写一个简单计算器程序,可根据输入的运算符,对2个整数进行加、减、乘、除或求余运算。题目保证输入和输出均不超过整型范围。 输入格式: 输入在一行中依次输入操作数1、运算符、操...

niithub
2018/12/08
0
0
游褒禅山记

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

Betty__
2016/11/11
5
0
算法学习之路|逆元取模(一)

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

kissjz
2018/02/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

听说拼多多因漏洞被薅了200亿?- 谈谈软件测试

昨天看到一个大新闻:拼多多在20日凌晨出现漏洞,用户可以领100元无门槛优惠券。一夜之间,被黑产、羊毛党和闻讯而来的吃瓜群众薅了个底朝天,直到第二天上午9点才将优惠券下架。网上传言这一...

crossin
29分钟前
2
0
微服务架构有毒,何时不使用微服务?

在过去的四年中,使用微服务来构建应用程序似乎成了一种标准。大多数我所合作过的团队也对此表现出了不同程度的兴趣。 微服务所承诺的弹性、高可用、低耦合、敏捷,以及能够解决单体架构带来...

架构师springboot
34分钟前
2
0
日志服务Python消费组实战(三):实时跨域监测多日志库数据

摘要: 本文主要介绍如何使用消费组实时监控多个域中的多个日志库中的异常数据,并进行下一步告警动作。具备配置简单、逻辑灵活、支持跨域多Region、实时监测,无需配置索引等特点,并且性能...

阿里云云栖社区
35分钟前
2
0
常用css动效

1.列表浮层变化动效 demo地址 下载地址 2.js动画库 github地址 3.滚动加载 Scrollreveal 4.其他动效 tobiasahlin

chinahufei
36分钟前
3
0
Coding and Paper Letter(四十六)

资源整理。 1 Coding: 1.卫星影像深度学习资源。 satellite image deep learning 2.runoff tools为MOM生成径流文件的一些工具变得轻而易举。 runoff tools 3.NOAA-GFDL海冰模拟器V2.0。 SIS2...

胖胖雕
38分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部