使用位掩码从C中的基数为10的数字获取页码和偏移量

时间:2016-04-26 12:44:17

标签: c bit-manipulation

我正在尝试从基数为10的数字中提取页码和偏移量。我能够毫无问题地提取偏移量,但是当我尝试获取页码时,它只是产生偏移量。

WITH
  MEMBER [Measures].[date info] AS
    IIF(
       [AbsenceDate].CURRENTMEMBER.MEMBER_CAPTION
         = [CourseDate].CURRENTMEMBER.MEMBER_CAPTION
       ,NULL
       ,'not the same date'
    )
SELECT
  ...
  ...

当我使用此代码时,我得到正确的偏移量,但页码不正确。我也试图将位数换成页码,但我也无法使用。此外,程序假设所有页码都是8位,所有偏移都是8位。

1 个答案:

答案 0 :(得分:1)

根据我的理解,页码可以通过

获得
int pg_number = address / (PAGE_MASK + 1);

或者

int pg_number = address >> 8;

但这实际上不是掩盖,而是实际的分裂。