Cтепень двойки

» опубликован
Библиотека, позволяющая узнавать значение выражения 2^x максимально эффективным из доступных в WC3 способов.
library Exp2
{
    int pow2[0x1f];

    int exp2(int power) {
        return pow2[power];
    }

    private void onInit() {
        pow2[0x00] = 0x00000001;
        pow2[0x01] = 0x00000002;
        pow2[0x02] = 0x00000004;
        pow2[0x03] = 0x00000008;

        pow2[0x04] = 0x00000010;
        pow2[0x05] = 0x00000020;
        pow2[0x06] = 0x00000040;
        pow2[0x07] = 0x00000080;

        pow2[0x08] = 0x00000100;
        pow2[0x09] = 0x00000200;
        pow2[0x0a] = 0x00000400;
        pow2[0x0b] = 0x00000800;

        pow2[0x0c] = 0x00001000;
        pow2[0x0d] = 0x00002000;
        pow2[0x0e] = 0x00004000;
        pow2[0x0f] = 0x00008000;

        pow2[0x10] = 0x00010000;
        pow2[0x11] = 0x00020000;
        pow2[0x12] = 0x00040000;
        pow2[0x13] = 0x00080000;

        pow2[0x14] = 0x00100000;
        pow2[0x15] = 0x00200000;
        pow2[0x16] = 0x00400000;
        pow2[0x17] = 0x00800000;

        pow2[0x18] = 0x01000000;
        pow2[0x19] = 0x02000000;
        pow2[0x1a] = 0x04000000;
        pow2[0x1b] = 0x08000000;

        pow2[0x1c] = 0x10000000;
        pow2[0x1d] = 0x20000000;
        pow2[0x1e] = 0x40000000;
        pow2[0x1f] = 0x80000000;  // == maxInt
    }
}
В dex просто потому что так было удобнее заполнять массив.


Просмотров: 453

Clamp #1 - 2 года назад 2
В Си это же делается ещё быстрее и без массивов через побитовый сдвиг влево.