2010-03-26 28 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) 
相關問題