簡體   English   中英

和掩碼以尋址(需要較低的位)C#

[英]AND a mask to address (lower bits needed) C#

所以我知道我可以將掩碼0xFFFFFFFF移8例如獲得0xFFFFFF00及其地址,並獲得除最后8位以外的所有內容,但是我想換一種方式,這樣我就可以抓住一個帶有掩碼(如0x000000FF)的地址,但是向右移位顯然不起作用。 有任何想法嗎?

這是我提到的第一種類型的移位的代碼。

public int Block_tag(int address, int block_size, int max_address)
    {
        int bit_shift = (int)Math.Log(block_size, 2);
        int bit_mask = max_address << bit_shift;
        return (address & bit_mask);
    }

我可以手動處理大約12個“ If”語句,但這並不是很干凈。

謝謝!

要簡單地反轉掩碼,請使用~運算符

int not_mask = ~bit_mask;

例如, ~0xFFFFFF00 == 0x000000FF

您可以將其右移(32 - number of mask bits you need) 因此,如果您需要低8位,則可以右移(32-8 = 24)位。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM