我想创建一个查找表/数组。数组大小为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