当前位置:首页 > 技术心得 > 正文内容

二进制操作最右侧位

xjtudll11年前 (2013-09-25)技术心得5250

   1  将最右侧的1变成0(可利用判断是不是2的幂) 

下面这个公式可以将一个数x的最右侧1变成0,如果没有1,则生成的所有位都是0

x &x-1

例如:0101 1000 B -----> 0101 0000 B

这个公式还可以用来检测该数是不是2的幂,如果一个数是2的幂,那么必然满足:

x &x-1 = 0

比较常见的应用就是:判断是否只有有个按键按下。

同样的道理,也可以用类似的办法来判断一个数是不是2n-1

x&x+1 = 0

  2 传播最右侧位 

利用以下公式可以传播最右侧的1,如果为 0,则生成的是1

x | (x-1)

例如:0101 1000 B -----> 0101 1111 B 

  将最右侧0变成1 

利用以下公式可以将最右侧0变成1,如果没有0,则生成的所有位都是1

x | (x+1)

例如:1010 0111 B -----> 1010 1111 B

扫描二维码推送至手机访问。

版权声明:本文由鸟的天空发布,如需转载请注明出处。

本文链接:http://www.xjtudll.cn/Exp/284/

标签: 算法
分享给朋友:

“二进制操作最右侧位” 的相关文章

晶振的等效电路(转载)

晶振的等效电路(转载)

http://blog.sina.com.cn/s/blog_a20257d80102w7y4.html 1 晶振的等效电气特性 (1) 概念 [1] 晶片,石英晶体或晶体、晶振、石英晶体谐振器 从一块石英晶体上按一定方位角切下薄片。 [2] 晶体振荡器 在封装内部添加IC组成振荡电路的晶...

把存储过程结果集插入临时表

--使用sp_helpserver 显示可用的服务器。  exec sp_helpserver  --打开服务器的"data access"属性  exec sp_serveroption '服务器名',...

电容主要技术参数

电容主要技术参数

1、标称容值及误差 标称值符合E系列。 2、额定工作电压 电容器中的电介质能够承受的电场强度是有限的,当施加在电容器上的电压超过一定值时,电介质有可能被击穿而损坏。额定工作电压是指,在规定的工作温度范围内,电容器在电路中连续工作而不被击穿的加在电容器上的最大有效值,习惯上叫电容器的耐压。 额定电压通...

CorelDraw12启动时图标一闪而过

现象: Coreldraw12启动时,图标一闪而过,无法打开cdr文件。每次启动都如此。 之前一直是可以使用的,在某次强制关机后,就发现软件不能使用了。 临时解决办法: 网上说的各种方法都试过了,都不行。目前只探索出了两种临时可行的办法。 方法一:每次使用coreldraw12前卸载c...

ios 获取应用程序的名称和版本号

.wiz-todo, .wiz-todo-img {width: 16px; height: 16px; cursor: default; padding: 0 10px 0 2px; vertical-align: -10%;-webkit-user-select: none;} .wiz-to...

Word通配符全攻略

Normal 0 7.8 磅 0 2 什么是WORD通配符?通配符是配合WORD查找、替换文档内容的有利武器。打开WORD,按Ctrl+F,点击&ldq...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。