1.lowbit:计算一个数字 x 二进制下最低位 1 对应的值

方法:

int lowbit(int x){return x&(-x);
}

lowbit 利用了补码的特性:正数的补码是其自身,负数的补码是正数按位取反后加一

例如:10 的补码是 1010,-10 的补码是 0110,按位相与后,即可得到 x 二进制下最低位 1 对应的值,即 lowbit(10)=2

2.判断一个数字 x 二进制下的第 i 位是不是等于 1

方法:

if( ( 1<<(i-1) ) & x )

将 1 左移 i-1 位,相当于制造了一个只有第 i 位上是 1,其他位上都是 0 的二进制数,然后与 x 与运算,如果结果大于 0,说明 x 第 i 位上是 1,反之为 0

3.将一个数字 x 二进制下第 i 位改为 1

方法:

x = x | (1<<(i-1))

将 1 左移 i-1 位,相当于制造了一个只有第 i 位上是 1,其他位上都是 0 的二进制数,然后与 x 或运算即可

4.把一个数字 x 二进制下最靠右的第一个 1 去掉。

方法:

x = x & (x-1)

5.计算一个数字 x 二进制下含有 1 或 0 的个数

int num=0;
while(x){x = x & (x-1);num++;
}

6.判断一个数 x 是否为 2 的 n 次方

bool judge(int x) {if( (x & (x-1)) == 0)return true;elsereutrn false;
}

常用技巧 —— 位运算 —— 位运算的应用相关推荐

  1. 常用技巧 —— 位运算 —— 位运算基础

    [与运算] 与运算常用于二进制的取位操作,其用符号 & 表示,相同位的两个数字都为1,则为1,若有一个不为1,则为0. 例如:00101 & 11100 = 00100 其会将两个十进 ...

  2. 【技巧总结】位运算装逼指南

    位算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下,今天给大家讲一讲位运算的一些经典例子.不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用位运算这些技巧,当然,采用位运算,也 ...

  3. 【FPGA】定点数 数据位宽 运算 位宽截取

    在FPGA中,经常使用定点数表示小数,在进行各种运算时,定点数的位宽会发生变化,并且需要在适当地时候对数据的位宽进行截取. 运算要求和引起的位宽变化 假设存在两个数A.B,假定A位宽为m,小数位宽为a ...

  4. BMP格式知识之二:16位,24位,32位的BMP图片算法是如何运算的

    BMP格式知识之二:16位,24位,32位的BMP图片算法是如何运算的 原文:http://blog.csdn.net/qq445803843/article/details/46476433 这段代 ...

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

    使用位运算(&与运算)代替%操作 %运算为取余运算 由于我们知道位运算比较高效,在某些情况下,当b为2的n次方时,有如下替换公式: a % b = a & (b-1)(b=2^n) 即 ...

  6. Home_W的位运算(位运算+预处理)

    Home_W的位运算1 题目链接: 传送门解题思路:这题有两种解题思路,一种就是\(n^2\times m\)的时间复杂度,还有一种就是经过预处理的时间复杂度为\(n^2\)的方法,先说第一种,大家直 ...

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

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

  8. 设变量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 ...

  9. java符号位_java 位运算符号

    <道生一,一生二,二生三,三生万物>出自老子的<道德经>第四十二章.主要讲述了一.二.三这几个数字,并不把一.二.三看作具体的事物和具体数量.它们只是表示"道&quo ...

  10. MATLAB常用命令、函数与运算

    MATLAB常用命令.函数与运算(自学笔记1) 笔者正在学习matlab的m函数,本文为学习笔记的其中之一. 本文主要介绍MATLAB中常用的命令.函数和运算. 文章目录 MATLAB常用命令.函数与 ...

最新文章

  1. 用AI变身16岁女孩,抓住40岁违法警察!20岁男大学生钓鱼执法秀翻美国!
  2. mysql 复合索引 in,MySQL复合索引比主键索引还快,为什么?
  3. php7 thinkphp5,thinkphp5+phpstudy+php7.0连接SQL Server 2008 | 睿客网
  4. [学习笔记]python
  5. Android中menu详解(转)
  6. Coding and Paper Letter(三十九)
  7. Tip:使用Extender的ResolveControlID事件
  8. python复制列表元素_Python学习教程:Python列表赋值,复制,深拷贝及5种浅拷贝详解...
  9. 菜鸟学习笔记:Java提升篇9(网络1——网络基础、Java网络编程)
  10. java实验总结_java第一次实验总结第三周总结
  11. 商业认知,你每天出门看天气吗?
  12. 从Hadoop看普通算法在一个系统中的应用
  13. 安装go编译器后没有gopath文件夹_Go 语言环境安装(集成 VS code)
  14. 一站式学习 Linux C语言编程
  15. E66 PC套件因多个USB的连接导致连接不上问题解决办法
  16. 985翻译硕士都在找的这款软件
  17. XlsxWriter的使用
  18. 海量数据处理技巧-转载
  19. ap9h4qmo.exe
  20. MySQL高级篇——事务

热门文章

  1. 中台到底是什么?传统企业怎样建设中台?
  2. 近 5 亿人的隐私,毁于一位程序员之手?
  3. STM32之定时器原理
  4. 转移到ios下载安卓_安卓和IOS角色互转 和平精英跨系统角色转移服务将上线
  5. python如何安装pdfminer_|请教在python3中安装pdfminer.six的方法
  6. ddos攻击工具_linux下DDoS攻击模拟实战
  7. 免费送新款华为笔记本 ! !不爱可折现!
  8. 用了这么久的数据库连接池,你知道原理吗?
  9. Kmeans CUDA
  10. String类以及String与基本数据类型/char[]/byte[]之间的转换