所以我知道我可以将一个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”语句手工完成,但这不是很干净。
谢谢!
答案 0 :(得分:1)
答案 1 :(得分:0)
您可以按(32 - number of mask bits you need)
右移。因此,如果您需要低8位,则可以右移(32-8 = 24)
位。