所以我得到一個無符號的int傳入我的函數。現在我必須獲得該整數的n個LSB位,並使用它訪問大小爲2^n
的數組中的位置。從Integer獲得n LSB C++
因此,舉例來說,如果我的數組的大小爲1024,N = 10
我目前這樣做:
unsigned int location = my_unsigned_int << n;
然而,隨着location
最終被太這不起作用大而超出界限。
所以我得到一個無符號的int傳入我的函數。現在我必須獲得該整數的n個LSB位,並使用它訪問大小爲2^n
的數組中的位置。從Integer獲得n LSB C++
因此,舉例來說,如果我的數組的大小爲1024,N = 10
我目前這樣做:
unsigned int location = my_unsigned_int << n;
然而,隨着location
最終被太這不起作用大而超出界限。
你可以只屏蔽你想要的位:
unsigned int location = my_unsigned_int & ((1<<n) - 1);
這是假設你的int
的大小至少n+1
位。
我認爲你的意思只有一個'&',因爲'&&'不是按位 – theKidOfArcrania
@theKidOfArcrania:我認爲你是對的。 –
它給了我一個錯誤「建議括號括起來 - ''內部<< – Alk
試着先在紙上做,看看你是否正確。爲了給你一個提示,你需要*屏蔽掉頂層的位。 –