加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 删除最低位

发布时间:2020-12-15 02:07:08 所属栏目:Java 来源:网络整理
导读:给定二进制数,删除最低位的最快方法是什么? 01001001010 – 01001001000 它将在代码中用于迭代变量的位.伪代码如下. while(bits != 0){ index = getIndexOfLowestOrderBit(bits); doSomething(index); removeLowestOrderBit(bits);} 我正在考虑使用的可能语
给定二进制数,删除最低位的最快方法是什么?

01001001010 – > 01001001000

它将在代码中用于迭代变量的位.伪代码如下.

while(bits != 0){
  index = getIndexOfLowestOrderBit(bits);
  doSomething(index);
  removeLowestOrderBit(bits);
}

我正在考虑使用的可能语言是C和Java.

解决方法

呃…在你的例子中,你已经知道了位的索引.然后很容易:

bits &= ~(1 << index);

这将屏蔽其索引为索引的位,而不管其在值中的位置(最高,最低或中间).想想看,你当然可以使用你知道该位已经设置的事实,并使用XOR再次清除它:

bits ^= (1 << index);

这样可以节省反转,这可能是一台机器指令.

如果你想要掩盖最低设置位,而不知道它的索引,那么诀窍是:

bits &= (bits - 1);

例如,请参见here.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读