2017-02-12 60 views
0

所以我得到一個無符號的int傳入我的函數。現在我必須獲得該整數的n個LSB位,並使用它訪問大小爲2^n的數組中的位置。從Integer獲得n LSB C++

因此,舉例來說,如果我的數組的大小爲1024,N = 10

我目前這樣做:

unsigned int location = my_unsigned_int << n; 

然而,隨着location最終被太這不起作用大而超出界限。

+0

試着先在紙上做,看看你是否正確。爲了給你一個提示,你需要*屏蔽掉頂層的位。 –

回答

2

你可以只屏蔽你想要的位:

unsigned int location = my_unsigned_int & ((1<<n) - 1); 

這是假設你的int的大小至少n+1位。

+0

我認爲你的意思只有一個'&',因爲'&&'不是按位 – theKidOfArcrania

+0

@theKidOfArcrania:我認爲你是對的。 –

+0

它給了我一個錯誤「建議括號括起來 - ''內部<< – Alk