将值映射到整数

时间:2016-12-17 06:07:48

标签: java math

我真的很累,所以这可能是一个愚蠢的问题,而我只是没有直接思考。但我试图基本上这样做,以便我可以映射

1 => 0
2 => 1
4 => 2
8 => 3

这方面的背景是我有一系列的东西。然后我传入一个值,如果值的数字为1,我想访问数组的偏移量为0,如果值的宽度为2,偏移量为1,如果值为4,则偏移量为2,等等。 / p>

有什么数学方法可以做到这一点,简洁明了吗?我认为一个HashMap或者其他东西会有点过分,我确信有一个比8个数组的查找更好的方法。

3 个答案:

答案 0 :(得分:1)

在给定模式中映射整数的简单和数学方法将是 nodejs -v 如果模式继续为x => log2(x)16 => 432 => 5等等。

大多数语言都有一种方法来计算标准库中数字的对数。如果该方法在2以外的基数中计算对数,则可以创建一个帮助方法来计算到基数2的日志。

64 => 6

答案 1 :(得分:0)

使用开关循环。

开关(值){
    案例1:返回1;
     打破;
    案例2:返回2;
     打破;
    案例4:返回3;
     打破;
    案例8:返回4;
     打破;
    默认值:返回0;
}

答案 2 :(得分:0)

试试这个。如果数组有错误的数据,您可以添加条件以抛出异常。

public static void main(String[] args) {
            int[] vals = new int[]{1,2,4,8};
            for(int i : vals){
                System.out.println(getResult(i));
            }
        }

    private static int getResult(int element){
        int i = -1;
        int temp = 2;
        while(true){
            i++;
            int result = (int) Math.pow(temp,i);
            if(result == element){
                return i+1;
            }
        }


    }