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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |