使用位运算(&与运算)代替%操作

%运算为取余运算
由于我们知道位运算比较高效,在某些情况下,当b为2的n次方时,有如下替换公式:

a % b = a & (b-1)(b=2^n)
即:a % (2^ n) = a & (2^n-1)

例如:14%8,取余数,相当于取出低位,而余数最大为7,14二进制为1110,8的二进制1000,8-1 = 7的二进制为0111,由于现在低位全为1,让其跟14做&运算,正好取出的是其低位上的余数。1110&0111=110即6=14%8;

(此公式只适用b=2^n,是因为可以保证b始终只有最高位为1,其他二进制位全部为0,减去1,之后,可以把高位1消除,其他位都为1,而与1做&运算,会保留原来的数。)

使用位运算(与运算)代替%操作相关推荐

  1. C#位运算实际作用之操作整型某一位

    1.前言 前几天写了两篇关于c#位运算的文章 c#位运算基本概念与计算过程 C#位运算实际运用 在文中也提到了位运算的实际作用之一就是合并整型,当时引用了一个问题: C# 用两个short,一个int ...

  2. 关于库位“参与MRP运算”与“不参与运算”相互变动的注意事项

        一.现状 因实际业务需求,库存从"不参与MRP运算"调整为"不参与运算",反之亦然. 二.原理 1.库位是否参与MRP运算 设置库位是否参与MRP运算, ...

  3. 【C 语言】结构体 ( 指针运算与指针内存操作 | 结构体成员偏移量计算 )

    文章目录 一.指针运算 与 指针内存操作 二.结构体偏移量计算 一.指针运算 与 指针内存操作 指针变量算术运算 ( 指针可以是任意值 ) : 指针 是一个变量 , 如果对指针进行 算术 / 逻辑 等 ...

  4. python双精度浮点数怎么写_Python双精度浮点数运算并分行显示操作示例

    本文实例讲述了Python双精度浮点数运算并分行显示操作.分享给大家供大家参考,具体如下: #coding=utf8 def doubleType(): ''''' Python中的浮点数是双精度浮点 ...

  5. python二维图颜色函数_Python scipy的二维图像卷积运算与图像模糊处理操作示例

    本文实例讲述了Python scipy的二维图像卷积运算与图像模糊处理操作.分享给大家供大家参考,具体如下: 二维图像卷积运算 一 代码 import numpy as np from scipy i ...

  6. python 双精度浮点_Python双精度浮点数运算并分行显示操作示例

    Python双精度浮点数运算并分行显示操作示例 这篇文章主要介绍了Python双精度浮点数运算并分行显示操作,涉及Python数学运算及显示相关操作技巧,注释备有详尽的说明,需要的朋友可以参考下 #c ...

  7. 设变量n为float类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五人运算的表达式是: A) n=(n*100+0.5)/100.0 B)m=n*100+0.5

    设变量n为float类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五人运算的表达式是: A) n=(n100+0.5)/100.0 B)m=n100+0.5 ,n= m ...

  8. 2 计算机组成原理第二章 数据的表示和运算 定点数运算 浮点数运算

    文章目录 1 进制转换 2 定点数表示及其运算 2.1 定点数表示 2.1.1 真值→补码 2.1.2 补码→真值 2.1.3 [XT]补 →[-XT]补 2.1.4 真值.原码.反码.补码转换关系图 ...

  9. java用流体加减乘除_任意输入两个数,完成加法、减法、乘法、除法运算!(加减乘除运算分别定义四个方法)_学小易找答案...

    [简答题]编写程序实现菜单设计 [简答题]一层平面图 [简答题]编写一个程序实现大小写字母转换 [简答题]利用循环语句输出一个五行的等腰三角形,如下图 [简答题]编写一个程序实现交换两个变量的数值. ...

最新文章

  1. zip 密码算法 java,java zip 密码
  2. js操作改变原数组的解决方法
  3. java中抽象类继承抽象类_Java中的抽象类用示例解释
  4. 【Python】comtypes模块Windows环境下使用批量转换成PDF文件
  5. linux如何得到本机地址,Linux下如何得到本机所有IP地址及MAC地址
  6. NginxJava笔记-Webservice使用HTTPS协议及Spring Boot配置tomcat
  7. JWT Token在线编码生成
  8. 博主带你两个月入门自然语言处理~
  9. ES6标准入门(阮一峰)-阅读记录与心得
  10. python时间序列函数_Python中的时间序列分解函数
  11. dos命令行的四种打开方式
  12. ps修改图片上文字的几种方法 图+文
  13. linux系统查看ssh是否开启,linux查看与开启ssh
  14. vue 二级路由嵌套和二级路由高亮问题
  15. (转)svn中更新工程出现如下错误:Working copy not locked; this is probably a bug, please report...
  16. app自动化测试——app自动化控制、常见控件定位方法
  17. 优惠加油系统定制开发卡密
  18. 分析器错误信息:nbsp;无法识别的配置节…
  19. 深度学习在嵌入式设备上的应用
  20. 我,90后,有点想住养老院

热门文章

  1. android listview动态添加viewpager,向 ViewPager 中添加 包含 ListView 的 Fragment
  2. arcgis server mysql_ArcGIS Server 10.1发布要素服务时遇到的数据库注册问题总结 (二)...
  3. 【题解】BZOJ5093图的价值(二项式+NTT)
  4. 往hbase插入数据,你会选择哪种?
  5. 【转】SQLServer数据库还原数据库后因孤立用户问题导致无法登陆的处理
  6. C# DataTable学习
  7. python入门-windows下anaconda环境搭建
  8. 查看一个进程对应的端口号
  9. jsp实现网页的在线调查功能
  10. 转换文档参数_1分钟教会你将Excel转换成Word,简单高效,办公人士必备神技