2010-03-26 24 views
2

什么是“清除第六位”整数的最佳方法?“清除第6位”的最佳方法是什么?

而且,您的解决方案平台是独立的吗? (32或64位整数等)。如果不是,你可以提供一个独立于平台的解决方案吗?

更新:我们不知道当它被给定时该位是否被设置或取消设置......还有,任何语言都可以......我知道独立于平台的解决方案需要2个操作员。 ..也许有各种方法或更简单的解决方案。

更新:更清楚:清除整数的第6个最低有效位。

+3

语言? ..... –

+0

实际上,任何语言......但如果C是一个很好的说明按位操作,或者其他语言,如果他们有非常优雅的解决方案? –

+1

嗯......究竟是大端整数的第6位呢?和一个小端的?... –

回答

5

x&= ~(1 << 5)

-2

如果你确定它已经设置,只需减去64

更新:加入测试

if((x % 128)/64 > 0) 
    x -= 64; 

至于我可以看到,现在,这没有任何的假设平台或语言支持。

+0

我认为不能肯定它已经设置好了。 –

+1

或32,如果您认为低位是“第1”位而不是“0”位。;) –

+0

Jian Lin提出了一个很好的观点,你必须检查第6位是否已经设置。你的第一个想法也是。 – jcolebrand

10

x & (~(1 << 6))

+0

等一秒钟,因为1 << 1是第二位,所以我们不需要1 << 5而不是1 << 6? –

+2

是的,但是大家都假设你开始依靠位0 – Gonzalo

0

也许这在c?

value&~(1<<6) 
相关问题