我想創建一個查找表/數組。數組大小爲n的形式爲k = 2^n的鍵的查找表
我得到的指數值的形式爲k = 2^n 只有,其中n是一個整數。所以我想將數組大小減小到n,因此我也必須對索引值執行操作。
我想要在嵌入式平臺上進行編程的最有效方式。
實施例:
我得到的值N = {1,2,4,8,16,32}
我有一個數組定義爲:
int myArray[6];
現在我想將值n轉換爲m,其中m = {1,2,3,4,5,6},因此我可以訪問數組元素:
myArray[m];
我想創建一個查找表/數組。數組大小爲n的形式爲k = 2^n的鍵的查找表
我得到的指數值的形式爲k = 2^n 只有,其中n是一個整數。所以我想將數組大小減小到n,因此我也必須對索引值執行操作。
我想要在嵌入式平臺上進行編程的最有效方式。
實施例:
我得到的值N = {1,2,4,8,16,32}
我有一個數組定義爲:
int myArray[6];
現在我想將值n轉換爲m,其中m = {1,2,3,4,5,6},因此我可以訪問數組元素:
myArray[m];
這是一個解決方案
#include <stdio.h>
int main()
{
int array[6] = {1, 2, 4, 8, 16, 32};
int index[6];
int i;
for (i = 0 ; i < 6 ; i++)
{
int value;
value = array[i];
index[i] = 0;
while ((value >>= 1) != 0)
index[i] += 1;
printf("%d\n", index[i]);
}
return 0;
}
散列表怎麼辦? – Rerito
http://stackoverflow.com/q/53161/812912 –
@Rerito可能不是一個很好的解決方案在嵌入式系統上。根據處理器的不同,可以通過彙編調用(BSR for i86)找到整數的最高位。然後,您只需將其用於查找值。 – IdeaHat