[英]AND with full bits?
我最近一直在閱讀一些代碼,並遇到了一些問題:
somevar &= 0xFFFFFFFF;
所有位都打開的東西有什么意義; 它到底是不是只等於somevar?
“somevar”可以是64位變量,因此該代碼將提取底部的32位。
編輯:如果它是一個32位變量,我可以想到其他原因,但它們更加模糊:
實際上,如果somevar
是int
類型(32位整數),這就沒有意義。 但是,如果它是long
(64位整數)類型,那么這將掩蓋值的上半部分(最重要的)。
請注意, long
值不保證是64位,但通常是一個32位計算機上。
我想這取決於somevar的長度。 當然,如果somevar是64位int,那么這將不是無操作。 或者,somevar是某種帶有重載operator&=
。
肯定是在64位環境中截斷32位。
如果代碼片段是C ++,那么可能已經重寫了&=
運算符,以便產生與按位AND無特別相關的效果。 當然,這將是一件令人討厭,邪惡,骯臟的事情......
有時long
的大小是32位,有時它是64位,有時它是別的東西。 也許代碼試圖補償它 - 並且只是使用該值(如果它是32位)或掩蓋其余的值並且僅使用它的低32位。 當然,這不是真的有意義,因為如果需要,那么使用int會更容易。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.