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

二进制操作最右侧位

xjtudll13年前 (2013-09-25)技术心得7880

   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://xjtudll.cn/Exp/284/

标签: 算法
分享给朋友:

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

谈谈BLE连接参数

在使用BLE过程中,BLE连接参数是一个比较容易忽略的地方,很多人从来不管这些连接参数,结果很容易出现以下几个问题: 1、设备功耗大; 2、与android系统手机或ios系统手机无法连接(尤其是ios系统); 3、连接后,串口使用较低波特率发送数据时,容易出现乱码; 这些问题...

LCD制作参数

1 、Display Type显示类型 TN 、HTN 、STN 、FSTN 等 显示类型对产品的价格影响最大,通常由显示像索的数量及产品的档次而定 TN 、HTN 、LCD 、COG 是什么? TN叫什么扭曲型LCD , HTN是比TN 宽视角的,上下各宽15度视角的,弥补TN 的一些不足,比他们...

Multisim导入MOSFET模型

文章来源:NI官网->在Multisim里导入MOSFET 模型 原文网址:http://digital.ni.com/public.nsf/allkb/E1DA418DD7A5E4A1862574B800219513 问题: 如何在Multisim器件里导入以“.MODEL&rd...

Quartus CPLD未使用引脚处理

Quartus CPLD未使用引脚处理

未使用的引脚可以设置成输出,三态输入,弱上拉输入等。Quartus 8.0默认设置成输出低电平(As output driving ground)。 引脚设置方法: 【Assignments】->【Setting】->【Device】->【Device and Pin Option...

老单单据上下查,某些字段在上下查出来的界面看不到

https://vip.kingdee.com/questions/55600564193023233/answers/55600565182629120 问题描述: 例如:将外购入库上的【保管】字段显示在序时簿界面,但是在采购发票序时簿上查外购入库单的界面看不到【保管】,查询起来不方便。 解决方案...

金蝶物料属性为自制,MRP计算需要产生委外类型的计划订单?

解决方案如下: 物料资料中设置该物料的默认生产类型为委外加工即可。具体操作步骤如下: 1、登录KIS旗舰版主控台,依次单击【系统设置】→【基础资料】→【公共资料】,双击【物料】; 2、进入物料资料界面,选择需要设置的物料点击【修改】,在弹出的【物料-修改】窗口中,选择【计划资料】...

发表评论

访客

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