1. 求大于或等于value的第一个奇数
    int result = value|1 ;
  1. 求大于或等于value的第一个质数
 // 质数表private readonly int[] primes = {3, 7, 11, 17, 23, 29, 37, 47, 59, 71, 89, 107, 131, 163, 197, 239, 293, 353, 431, 521, 631, 761, 919, 1103, 1327, 1597, 1931, 2333, 2801, 3371, 4049, 4861, 5839, 7013, 8419, 10103, 12143, 14591, 17519, 21023, 25229, 30293, 36353, 43627, 52361, 62851, 75431, 90523, 108631, 130363, 156437,187751, 225307, 270371, 324449, 389357, 467237, 560689, 672827, 807403, 968897, 1162687, 1395263, 1674319, 2009191, 2411033, 2893249, 3471899, 4166287, 4999559, 5999471, 7199369};
    // 如果 min 是质数,返回 min;否则返回比 min 稍大的那个质数private int GetPrime(int min){// 从质数表中查找比 min 稍大的质数for (int i = 0; i < primes.Length; i++){int prime = primes[i];if (prime >= min) return prime;}// min 超过了质数表的范围时,探查 min 之后的每一个奇数,直到发现下一个质数for (int i = (min | 1); i < Int32.MaxValue; i += 2){if (IsPrime(i))return i;}return min;}// 判断 candidate 是否是质数private bool IsPrime(int candidate){if ((candidate & 1) != 0) // 是奇数{int limit = (int)Math.Sqrt(candidate);for (int divisor = 3; divisor <= limit; divisor += 2) // divisor = 3、5、7...candidate的平方根{if ((candidate % divisor) == 0)return false;}return true;}return (candidate == 2); // 除了2,其它偶数全都不是质数}
  1. 取模与取余运算
    取模与取余运算的数学公式几乎相同:

    差异在于,对于取模运算,[ x / y ] 是向下取整;而对于取余运算,其是向0取整;
    例如,当 x = -2, y = 10 时;
    取模运算: x mod y = -2 mod 10 = -2 - 10 * [-2 / 10 ] = -2 - 10 * (-1) = 8;
    取余运算: x % y = -2 % 10 = -2 - 10 * [-2 / 10 ] = -2 - 10 * 0 = -2;
        // x = 5, y = 8System.out.println(5 % 8); // 5System.out.println(Math.floorMod(5, 8)); // 5// x = -5, y = -8System.out.println(-5 % -8); // -5System.out.println(Math.floorMod(-5, -8));// -5// x = -5, y = 8System.out.println(-5 % 8);// -5System.out.println(Math.floorMod(-5, 8));// 3// x = 5, y = -8System.out.println(5 % -8); // 5System.out.println(Math.floorMod(5, -8)); // -3// x = -2, y = 10System.out.println(-2 % 10); // -2System.out.println(Math.floorMod(-2, 10)); // 8
  1. 求value对2^32取模的值
int result = value & 0x7FFFFFFF;
  • 若value为正数,结果为其本身;
  • 若value为负数,结果为: Integer.MAX_VALUE - Math.abs(value) + 1;
  1. 获取最高符号位
 return  (value2 & 0x80000000) == 0 ? 0 : 1;
  1. 将符号位变为1,其余位保持不变
 int result = value | 0x80000000;

注意:数字在计算机中是采用补码保存的,因此仅变动符号位并不是获取其反数;

 比如:  [00000001]补码  ==  [00000001]反码  ==  [00000001]原码;  // 1[10000001]补码  ==  [10000000]反码  ==  [11111111]原码;  // -127

参考资料:
原码、补码、反码的关系
白话算法(6) 散列表(Hash Table) 从理论到实用(下)

位运算中的一些数学原理相关推荐

  1. 位运算中的按位与(),按位或(|),按位异或(^)

    大家好,今天和大家分享的是位运算符中的按位与,按位或,按位异或. 首先先声明一下:参加位运算的两个数都要用二进制来表示. 一般给的数都是十进制,十进制转化为二进制的方法如下: 注意:如果给的是八进制, ...

  2. 位运算中的左移和右移的计算详解

    最近在学习javaScrapt,在学到位运算符这部分的时候,突然发现看不懂书上的例子了.经过查找资料后,发现了一遍不错的文章.分享一下: 正数的左移和右移 以3为例 3的二进制为 00000011 右 ...

  3. 按位取反如何运算 php,php 位运算中的按位取反到底什么意思?

    先看代码:$a=8; $b=~$a; //按位取反 echo "\$a=".$a." "; echo "\$b=".$b; 输出结果:$a= ...

  4. c语言中位运算之布尔运算

    c语言中位运算中的布尔运算有:&.|.~.^ &:按位与 |:按位或 ~:按位非 ^:按位异或,相同为0,相异为1. 计算规则如下: 位的逻辑运算的作用: 使用位向量做集合编码: 使用 ...

  5. c语言10以内位运算,C语言基础知识--位运算

    1.原码,反码,补码: (1)在n位的机器数中,最高位为符号位,该位为零表示为正,为一表示为负:其余n-1位为数值位,各位的值可为零或一.当真值为正时,原码.反码.补码数值位 完全相同:当真值为负时, ...

  6. 7 分钟全面了解位运算

    位运算是我们在编程中常会遇到的操作,但仍然有很多开发者并不了解位运算,这就导致在遇到位运算时会"打退堂鼓".实际上,位运算并没有那么复杂,只要我们了解其运算基础和运算符的运算规则, ...

  7. 位运算的那些事(三)位掩码

    位运算的那些事系列: <位运算的那些事(一)搞懂机器码> <位运算的那些事(二)如何位运算> <位运算的那些事(三)位掩码> 前两篇我重点针对位运算基础以及运算过程 ...

  8. 七分钟全面了解位运算

    位运算是我们在编程中常会遇到的操作,但仍然有很多开发者并不了解位运算,这就导致在遇到位运算时会"打退堂鼓".实际上,位运算并没有那么复杂,只要我们了解其运算基础和运算符的运算规则, ...

  9. 我对位运算的若干疑问和认识

    我对位运算的若干疑问和认识 1.首先位运算是什么? 2.位运算能干些什么? 3.为什么使用位运算而不用其他的运算? 4.既然用到位运算,它操作符如何使用,应用场景是什么? 针对上面我的个人的几个问题, ...

  10. 全面解读Math对象及位运算

    <p>本文转载自:<a href="https://segmentfault.com/a/1190000008786789" title="全面解读Ma ...

最新文章

  1. php 查询数据库 刷新,这个每次刷新都要去数据库里面查询一遍吗?
  2. java基础(七) java四种访问权限
  3. lua检测表中是否有某个值,如何检查表是否包含Lua中的元素?
  4. boost::inplace_merge相关的测试程序
  5. java 0 1背包_浅谈java实现背包算法(0-1背包问题)
  6. pytorch得到梯度计算结果
  7. linux网卡备份还原,CentOS6.x双网卡采用主-备份策略绑定(bond)
  8. 金庸笔下的良好代码风格
  9. Linux文本模式自动登录,Linux开机自动登录(文本模式)
  10. 当欧洲开始通过页游对抗假新闻,中国何时起步媒介素养培育?
  11. 数控技能大赛计算机程序员,全国数控技能大赛计算机程序设计员-广东职业技能鉴定指导.DOC...
  12. CAD中如何把一个DWG文件里的块插入到另一个DWG中
  13. 点云检测框投影到图像上(mmdetection3d)
  14. 关于电脑硬盘灯常亮,电脑很卡问题
  15. 气象绘图(二)——散点图
  16. windows下nginx+lua+redis实现短域名服务
  17. 我国专利法规定的专利类型有三种:发明专利、实用新型专利、外观设计专利
  18. 判断质数/素数——我知道的最快的方法
  19. 反射内存网与以太网技术比较
  20. 移动应用安全开发规范-安卓基础篇

热门文章

  1. table 样式美化
  2. Mstar官网下载转换成jpg格式的保姆级教程
  3. Python爬虫 - 02.实现贴吧签到
  4. 戴尔计算机亮度如何调整,官方数据:如何调整Dell显示器的亮度
  5. 对联广告php代码,css实现的对联广告代码
  6. 电驴搜索服务器正在连接,电驴连接不上服务器怎么解决?
  7. 金蝶显示服务器连接超时,金蝶连接云服务器超时
  8. linux系统富士通打印机驱动,PRIMERGY:驱动下载 - 富士通中国
  9. 哈工大同义词词林扩展版-资源分享
  10. Python工作任务自动化教程